Your best bet, then, is to decide as quickly as possible whether you want to 
use Julia. If you start reading here:

http://docs.julialang.org/en/latest/manual/faq/#what-does-type-stable-mean

you'll maximize your chances of quickly discovering other things that will 
likely annoy you :-). While only the section I directly linked to is necessary 
to understand why `ones(n,1)` can't return a Vector, you should also be sure 
to read the next 2 sections on DomainErrors and machine arithmetic, just to 
make sure you've drunk the full cup's worth of annoyance.

Then you'll be in a good position to make an informed judgment about whether 
you want to accept the hassles in exchange for the benefits the type system 
provides.

Best,
--Tim

On Monday, November 17, 2014 10:02:07 AM Eka Palamadai wrote:
> I don't know what matlab does.
> 
> 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).
> 
> On Monday, November 17, 2014 12:53:25 PM UTC-5, Tim Holy wrote:
> > What's intuitive is very dependent upon your background. If you're coming
> > from
> > Matlab, for example, "everything is a matrix" and Matlab does this
> > extraordinarily-confusing thing:
> > 
> > ones(3,3,3) gives me a 3d array;
> > ones(3,3) gives me a 2d array;
> > but
> > 
> > >> ones(3)
> > 
> > ans =
> > 
> >      1     1     1
> >      1     1     1
> >      1     1     1
> > 
> > Why the heck did it give me a 2d matrix when I asked for a 1-dimensional
> > vector of 1s?
> > 
> > Julia is much more consistent: the dimensionality of the created object is
> > equal to the number of indices you supply. If you ask for something that's
> > 3x1, that's the size you'll get out; perforce, that is a 2d array.
> > 
> > --Tim
> > 
> > On Monday, November 17, 2014 09:41:10 AM Eka Palamadai wrote:
> > > "which I think is reasonable" is a subjective argument.
> > > It would be helpful if the type system is intuitive and non-confusing to
> > > programmers.
> > > 
> > > On Monday, November 17, 2014 12:24:58 PM UTC-5, Andreas Noack wrote:
> > > > Semantically, ones(n,1) creates a vector and not a matrix.
> > > > 
> > > > I'd rather say that in MATLAB ones(n,1) creates a vector.
> > > > 
> > > > This has been discussed many times on the list and in issues. In
> > > > particular, see the famous
> > 
> > https://github.com/JuliaLang/julia/issues/4774
> > 
> > > > .
> > > > 
> > > > In Julia, Vector{T} and Matrix{T} are aliases for Array{T,1} and
> > > > Array{T,2} which I think is reasonable. The questions are to what
> > 
> > extend a
> > 
> > > > nx1 Matrix should work similarly to a Vector and a Vector should work
> > > > similarly to a nx1 Matrix. That is the discussion in the issue
> > 
> > mentioned,
> > 
> > > > and it is actually more subtle than one would expect.
> > > > 
> > > > 2014-11-17 12:04 GMT-05:00 Eka Palamadai <[email protected]
> > 
> > <javascript:>>
> > 
> > > >> Semantically, ones(n,1) creates a vector and not a matrix.
> > > >> Why is ones(n,1) different from ones(n)?
> > > >> The type system is very confusing and non-intuitive.
> > > >> 
> > > >> On Sunday, November 16, 2014 7:28:28 PM UTC-5, Andreas Noack wrote:
> > > >>> The input should be two Vectors, but your first argument is a Matrix
> > > >>> 
> > > >>> 2014-11-16 19:25 GMT-05:00 Eka Palamadai <[email protected]>:
> > > >>>> SymTridiagonal does not seem to work properly.
> > > >>>> 
> > > >>>> For e.g, the following snippet fails.
> > > >>>> 
> > > >>>> julia> n=10 ;
> > > >>>> A=SymTridiagonal(2*ones(n,1), -1*ones(n-1));
> > > >>>> ERROR: `convert` has no method matching
> > > >>>> convert(::Type{SymTridiagonal{T}},
> > > >>>> 
> > > >>>> ::Array{Float64,2}, ::Array{Float64,1})
> > > >>>>  
> > > >>>>  in call at base.jl:34
> > > >>>> 
> > > >>>> Any thoughts?

Reply via email to