My goal is not to remove namespaces, quite the opposite, for types a 
namespace is an elegant solution to resolving the ambiguity between 
different types of the same name. What I do object to is that functions 
(which are defined against user defined types) are relegated to being 
second class citizens in the Julia world unless you are developing in Base. 
For people in Base the world is great, it all just works. For everybody 
else you either shoe horn your behavior into one of the Base methods by 
extending it, or you are forced into qualifying names when you don't need 
to. 

1) Didn't that horse already bolt with Base. If Base were subdivided into 
strict namespaces of functionality then I see this argument, but that isn't 
the case and everybody would be complaining that they need to type 
strings.find("string") 
2) To me that is what multiple dispatch is all about. I am calling a 
function and I want the run time to decide which implementation to use, if 
I wanted to have to qualify all calls to a method I'd be far better off in 
an OO language. 


On Thursday, April 30, 2015 at 2:15:51 AM UTC-4, Tamas Papp wrote:
>
>
> On Thu, Apr 30 2015, Stefan Karpinski <[email protected] <javascript:>> 
> wrote: 
>
> > Function merging has these problems: 
> > 
> >    1. It complects name resolution with dispatch – they are no longer 
> >    orthogonal. 
> >    2. It makes all bindings from `using` semantically ambiguous – you 
> have 
> >    no idea what a name means without actually doing a call. 
>
> IMO orthogonality of name resolution and dispatch should be preserved -- 
> it is a nice property of the language and makes reasoning about code 
> much easier. Many languages have this property, and it has stood the 
> test of time, also in combination with multiple dispatch (Common 
> Lisp). Giving it up would be a huge price to pay for some DWIM feature. 
>
> Best, 
>
> Tamas 
>

Reply via email to