>
> Hi Bard,
>
> Thanks a lot for your message.
>
> What I mean is that there are 2 different meanings to the same
> syntax construction.
> So, the first [something] supplies the type whilst the second
> [somethingelse] supplies a list of initialization values;

This is certainly true.

>
> So... everytime I see [T] I expect that T refers to a type, whilst
> it is not true when [T] is, in fact a list which contains one
> variable called T.
>
> If we can say that X10 is based on Scala (I dont know if I'm
> authorized to say it and I dont know if this statement is
> desirable!)... we should employ parenthesis for lists.

As far as I know (and I wasn't here at the start of the project)
X10 is *not* based on Scala.  It's got a lot of common roots with Scala,
and perhaps some inspiration from it.

>
> So, in Scala you would say
>        new Array[Place](host)  instead of Array[Place][host]


Parentheses are uncontestably claimed for object-constructor arguments,
as in "new Quaternion(a,x,y,z)".

Array constructor expressions aren't standard object constructors: they
take any number of arguments, and have fixed compiler-understood semantics.

There are, I believe, some object-style constructors for arrays:
new Array[Int](1..10, (i:Int) => i*i)

>
> I understand the usability of constraints and I prefer explicit
> types instead of inferred ones which eventually work against me.

Fair enough.  I like the infer-and-check idiom myself:

   val x <: Frob = Frob.makeSomeSpecificFrob()

which (1) checks the type bound I said, but (2) keeps track
of inferred information.



>
> So, when we talk about explicit types, the syntax below is even
moreconfused:
>
> val a : Array[Place] = new Array[Place][host]; // what?
>
> What is happening under the covers would be much more apparent if it were
>
> val a : Array[Place] = new Array[Place](host);
>
> or even:
>
> val a : Array[Place] = new Array[Place]( [host] );
>
>
>
> I mean: when I construct an object, I obviously call the
> constructor, which eventually accepts some arguments. So, when
> parenthesis dissappear, it leads us to think that a constructor is
> not being called at all.

Well -- parentheses mean approximately 1092347590823475 things, and
brackets
mean, I think, two.  It would be nice to be consistent and distinctive, but
with only a few
sorts of symbols for a multitude of constructs,  we can't do both.
And I don't think we're allowed to use full Unicode until about 2020.

>
> My 2 cents

Thanks! We certainly appreciate hearing from unhappy users who can
express themselves coherently!

>
> Cheers :)
>
>
>
>
>
>
> --- On Fri, 19/11/10, Bard Bloom <ba...@us.ibm.com> wrote:
>
> From: Bard Bloom <ba...@us.ibm.com>
> Subject: Re: [X10-users] Array constructor?
> To: "Mailing list for users of the X10 programming language" <x10-
> us...@lists.sourceforge.net>
> Cc: "Mailing list for users of the X10 programming language" <x10-
> us...@lists.sourceforge.net>
> Date: Friday, 19 November, 2010, 12:36
>
> Well, the short-and-simple array constructor is like this:
>    [1,2,3,4]
> which produces an Array[Int](1).   That type, btw, means "An array of
Ints
> with 1 dimension."
>
> But suppose that you want an Array[Int{self!=0}]'s?  -- an array of
> non-zero Ints?
> [1,2,3,4] looks like that, since they're all nonzero, but the type rules
> make it just Array[Int](1).
>
> So, by analogy with (1) Java array constants, and (2) object
construction,
> we let you tell what
> type you actually want in the array, by sticking on a prefix "new Array
[Int
> {self!=0}]" -- or more
> generally "new Array[T]".
>    new Array[Int{self != 0}] [1,2,3,4]
> is an array of non-zero Ints, by type.
>
> I recommend using the simple syntax when you can.   I believe that it
> usually does the right thing, and
> in particular does so in this case:
>
>    val test2 <: Array[Place] = [host];
>
> (Apologies for sending you untested code.)
>
> If that doesn't give you the type you want, you can use the more detailed
> constructor.  But we hope
> that the simple constructor does what is wanted most of the time.
>
> See the spec: section 11.26
>
> -- Bard
>
>
> >
> > cc
> >
> > Subject
> >
> > Re: [X10-users] Array constructor?
> >
> > humm.....
> >
> > val test2 : Array[Place] = new Array[Place](host);
> >
> > *does not* compile... actually.
> >
> > I've tried this too:
> >
> > for (host in Place.places()) {
> >      val test1 : Array[Place] = new Array[Place][host,host,host,host];
> > }
> >
> > .. which leads me to think that:
> >
> > 1. I'm declaring an Array with parametric type Place  :: Array[Place]
> > 2. I'm initializing this Array[Place] with 4 elements of value "host"
> >
> > If I'm correct, the conclusion is that the syntax is pretty confused :(
> >
> > Thanks
> >
> > Richard Gomes
> > M: +44(77)9955-6813
> > http://tinyurl.com/frgomes
> > twitter: frgomes
> >
> > JQuantLib is a library for Quantitative Finance written in Java.
> > http://www.jquantlib.org/
> > twitter: jquantlib
> >
> > On 19/11/10 08:40, Richard Gomes wrote:
> > > Hi guys,
> > >
> > > I've seen code more or less like this:
> > >
> > >       for (host in Place.places()) {
> > >           val workers : Array[Place] = new Array[Place][host];
> > >    ...
> > >       }
> > >
> > > What it means, exactly?
> > > I'm confused with text "[host]" which looks strange.
> > >
> > >
> > > I've changed "[host]" by "(host)" like shown below and it compiles.
> > >
> > >       for (host in Place.places()) {
> > >           val test1 : Array[Place] = new Array[Place][host]; //
> compiles
> > >           val test2 : Array[Place] = new Array[Place](host); //
> compiles
> > >    ...
> > >       }
> > >
> > > So... looks like the compiler is automagically interpreting "[host]"
as
> > > "(host)" ???
> > >
> > >
> > > Thanks a lot
> > >
> > > Cheers :)
> > >
> >
> >
>
------------------------------------------------------------------------------

>
> > Beautiful is writing same markup. Internet Explorer 9 supports
> > standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
> > Spend less time writing and  rewriting code and more time creating
great
> > experiences on the web. Be a part of the beta today
> > http://p.sf.net/sfu/msIE9-sfdev2dev
> > _______________________________________________
> > X10-users mailing list
> > X10-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/x10-users
>
------------------------------------------------------------------------------

> Beautiful is writing same markup. Internet Explorer 9 supports
> standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
> Spend less time writing and  rewriting code and more time creating great
> experiences on the web. Be a part of the beta today
> http://p.sf.net/sfu/msIE9-sfdev2dev
> _______________________________________________
> X10-users mailing list
> X10-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x10-users
>
>
>
>
>
------------------------------------------------------------------------------

> Beautiful is writing same markup. Internet Explorer 9 supports
> standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
> Spend less time writing and  rewriting code and more time creating great
> experiences on the web. Be a part of the beta today
> http://p.sf.net/sfu/msIE9-sfdev2dev
> _______________________________________________
> X10-users mailing list
> X10-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x10-users
------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to