Having "using LinAlg" would help to clean up the namespace of available 
functions for people who don't need it but what I was proposing is doing 
"using LinAlg" shouldn't change the API that much (if at all).  You still 
want to factorize numbers and polynomials (which are not part of LinAlg). 
 The API shouldn't grow 10x because LinAlg adds a bunch of matrix types 
than can also be factorized.  What I was proposing is actually a lot 
smaller list of fuctions to export (not more). 

For example

Using multi-dispatch:
factorize
factorize!

Not using multi-dispatch:
factor
factorize
factorize!
chol
cholfact
cholfact!
lu
lufact
ldltfact
qr
qrfact
qrfact!
bkfact
eigfact
hessfact
shurfact
svdfact
etc.

(I don't tend to pick on LinAlg in general...it is just the example brought 
up by this thread.  Please pick on the using multi-dispatch idea in general 
and not on specific errors/ommissions in the above list.)

I found multi-dispatch to be annoying at first but came around to really 
like it.  It made my code more generic, reduced the number of lines ("if" 
statements disappeared), ran faster, more modular, was more extendable and 
generic.  I haven't used another programming language that gives such 
enjoyment...but if people don't adopt multi-dispatch then these benefits 
dissappear.  The compound (shorthand) names will be shorter (horizontally) 
but the code will be less generic and you will have more lines to look at 
(vertically).  There are no guidelines for these compound names to follow 
so it is confusing for everyone except the people who have memorized these 
names.

Reply via email to