Hi All,

I have been using C++ and Python for several years and I am very curious 
about Julia, I've got the REPL working on my workstation and I am really 
impressed so far with what I've seen.
However there are some design decisions in the language that I fail to 
understand and I would really appreciate if someone could explain the 
rationale:

The main point that I fail to understand is the decision not to allow 
member functions. 
The typical explanation that I find everywhere is that Julia designers have 
chosen all the methods to be external because this is cleaner (specially 
for mathematical methods where there is no clear owner) and allows for 
multiple dispatch.
This explanation does not convince me for the following reasons:

1) We can have multiple dispatch a la Julia and still allow types to have 
methods. These two things seeem independent to me.
2) Dynamic multiple dispatch can also be done as a byproduct of single 
dispatch using the visitor pattern (C++, Java, etc.), so in that sense, 
multiple dispatch is not a new feature.
3) Lack of member functions forces all field to be public and therefore I 
cannot understand how Julia will avoid the object orgy anti-pattern (https
://en.wikipedia.org/wiki/Object_orgy)

But hey, Julia still looks great, it is just that I would really like if 
someone could explain away my concerns, most likely I am missing something 
here.
Thanks!
Julian 

Reply via email to