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
>