caution: bleeding-edge ahead!

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Jan 13 12:07:33 UTC 2015


Timo, Ali,
type aliasing won't address all issues associated with layering - i.e. 
the fact that we'd like, for instance, to be able to say that a method 
remove(Object) only exists on reference-parameterized collections.

That said, something like type aliasing might be useful when doing 
wholesale specialization (i.e. custom specialized implementation for 
i.e. ArrayList<boolean>).

Maurizio

On 13/01/15 09:31, Ali Ebrahimi wrote:
> I don't see this how solves the problems layering tries to solve. Just 
> now we can alias IntStream as Stream<int> in User code maybe in import 
> statements.
>
> import j.u.IntStream as Stream<int>;
>
> Stream<int> intStream; // compiles as IntStream intStream;
>
>
> On Tue, Jan 13, 2015 at 10:16 AM, Timo Kinnunen 
> <timo.kinnunen at gmail.com <mailto:timo.kinnunen at gmail.com>> wrote:
>
>     How about a new keyword “__aliasOf”, which would be used in a
>     class declaration like this:
>
>     public class IntArrayList __aliasOf ArrayList<int> implements
>     List<int> {
>     // int layer is implemented here
>     }
>
>     The effect of __aliasOf would be that user code could call
>
>     new ArrayList<int>()
>
>     but this would actually execute like a call to
>
>     new IntArrayList()
>
>     and user code would then be compiled against the methods and
>     fields from IntArrayList.
>
>
>     (And the name of the keyword is subject to change, of course.)
>
>
>
>     -- 
>     Have a nice day,
>     Timo.
>
>     Sent from Windows Mail
>
>     *From:* Maurizio Cimadamore <mailto:maurizio.cimadamore at oracle.com>
>     *Sent:* ‎Tuesday‎, ‎January‎ ‎13‎, ‎2015 ‎1‎:‎21
>     *To:* Ali Ebrahimi <mailto:ali.ebrahimi1781 at gmail.com>, Brian
>     Goetz <mailto:brian.goetz at oracle.com>
>     *Cc:* valhalla-dev at openjdk.java.net
>     <mailto:valhalla-dev at openjdk.java.net>
>
>
>     On 12/01/15 23:32, Ali Ebrahimi wrote:
>     > Why we can not adapt C++'s #if, #elif, #else, and #endif Directives
>     > for java with java-like syntax. You can see that in hotspot code
>     the
>     > similar problems (OS depends-code) perfectly to be solved by
>     Directives.
>     >
>     > So we can have support for multiple any type vars and nested
>     layers,
>     > and compiler can do flow analysis for nested layers (where
>     clauses or
>     > what ever you want).
>     Hi Ali,
>     I agree that, to some extent, the end goal of layers is to
>     effectively
>     enable some form of 'optional' membership/overriding which could
>     also be
>     thought of in terms of classic C++-style macros around method
>     declarations/blocks etc. In fact, I think that, apart from partial
>     abstractness, what's implemented right now is more or less
>     functionally
>     equivalent to layers (modulo bugs, of course). That said, I think
>     we are
>     in the search of something that would sit better with the Java
>     programming model; granted, #ifdefs and friends will take you
>     there, but
>     I think it will also be overly powerful - and prone to be abused (and
>     perhaps, as some of you have noted in this mailing list, layers
>     has that
>     problem); what if there was a nice little construct that, with
>     minimal
>     footprint could take you all the way there - meaning that you could
>     retrofit the libraries you care about, w/o really adding a new
>     powerful
>     hammer to the language? I think that 'something' is the sort of
>     magic we
>     are after here.
>
>     Maurizio
>
>
>
>
> -- 
>
> Best Regards,
> Ali Ebrahimi



More information about the valhalla-dev mailing list