As a user, ones(n,1) and ones(n) both return me a vector, and it is > confusing to find that ones(n,1) != ones(n) >
I was where you are now a few months ago. It's a learning cure thing, I think, because now I don't make that mistake anymore or I'm like, oh yea, of course and change it 2 seconds later. But to a new user it can be uninviting and not easily solved with just more documentation. The question to me is what is the tradeoff? For a semi-experienced user like me, it looks like Julia is trying to pick a spot of convenience while trying to retain access to optimization. The convenience part is the REPL, no requirement for variable type declaration, no function type return declaration, and on the other hand types and an options for variable type declaration to allow the JIT to better optimize. Your experience sits right where those to conflicting things are fighting it out right now, and this wall-of-text doesn't help you out any. I think this might be helped by having more verbose error messages (optionally).