A syntax option (function types versus arrays)
Stefan Schulz
schulz at the-loom.de
Thu Mar 11 13:59:42 PST 2010
On 11.03.2010 19:01, Joshua Bloch wrote:
> My two cents:
>
> #< #< R() throws E>( #< R( A ) throws E>, A )> curry =
> new #< #<R() throws E>( #< R( A ) throws E> l, A a )>( l.( a ) );
>
> (..)
>
> I do think it makes sense to explore new syntax proposals, but I'm not sure
> I like this one better than the one that's currently on the table.
Adding another two cents. The use of hash plus angle brackets plus round
parens gives quite some noise. I imagine adding some parameterized types
in such a definition ...
I scanned the list and noted down the syntax proposals we have so far
(order of appearance on the list) using a simplyfied notation (ignoring
optional definitions). I also added a curry-example to each of them,
which I hopefully got right.
Cheers,
Stefan
1) Straw-man, latest
# ResultType ( TypeList ) ( throws ExceptionList )
Curry-example:
##R()(throws E) (#R(A)(throws E), A) curry = ...
2) Peter Levart, 26 Jan 2010
# ( TypeList : ResultType throws ExceptionList )
Curry-example:
#( #(A: R throws E), A: #(: R throws E) ) curry = ...
3) John Rose, 26 Jan 2010 ff
( TypeList ) throws PipedExceptionList -> ResultType
Curry-example:
((A) throws E -> R, A) -> () throws E -> R curry = ...
4) Neal Gafter, 27 Jan 2010
# ( TypeList -> ResultType throws ExceptionList )
Curry-example:
#(#(A -> R throws E), A) -> #( -> R throws E)) curry = ...
5) Stefan Schulz, 31 Jan 2010
[ ResultType ( TypeList ) throws ExceptionList ]
Curry-example:
[[R() throws E]([R(A) throws E], A) curry = ...
6) Remi Forax, 09 Feb 2010
TypeList throws ExceptionList -> ResultType
(plus additional parens rules)
Curry-Example:
(A throws E -> R), A -> (throws E -> R) curry = ...
7) Peter Levart, 9 Feb 2010
ReturnType # ( TypeList ) throws ExceptionList
Curry-Example:
R #() throws E #(R #(A) throws E, A) curry = ...
8) Stefan Schulz, 16 Feb 2010
(: TypeList -> ResultType throws ExceptionList )
Curry-Example:
(: (: A -> R throws E ), A -> (: -> R throws E) ) curry = ...
9) Neal Gafter, 26 Feb 2010
( TypeList throws ExceptionList ) -> ResultType
Curry-Example:
( (A throws E) -> R, A ) -> (throws E) -> R curry = ...
10) BGGA
{ TypeList => ResultType throws ExceptionList }
Curry-example:
{ {A => R throws E}, A => { => R throws E} } curry = ...
11) FCM
# ( ResultType ( TypeList ) throws ExceptionList )
Curry-example:
#( #(R() throws E) ( #(R(A) throws E), A ) ) curry = ...
12) FCM Alternate
# ( TypeList return ResultType throws ExceptionList )
Curry-example:
#( #(A return R throws E), A return #(return R throws E)) curry = ...
13) Howard Lovatt, 11 Mar 2010
# < ResultType ( TypeList ) throws ExceptionList >
Curry-example:
#< #< R() throws E >( #< R( A ) throws E >, A ) > curry = ...
14) Gernot Neppert, 11 Mar 2010
lambda < ReturnType , TypeList , throws ExceptionList >
Curry-example:
lambda<lambda<R, throws E>, lambda<R, A, throws E>, A> curry = ...
More information about the lambda-dev
mailing list