[Aldor-l] +-> lambda expressions without specifying types

Ralf Hemmecke ralf at hemmecke.de
Fri Mar 20 20:14:54 EDT 2009


If I did not make a mistake, the grammar in the Aldor User Guide seems 
to allow something like x+->x+1.

But in the program below the Aldor compiler (1.1.0) cannot/does not 
infer the type of the lambda expression in baz.

Stephen, is that intended or is that just a short-coming of the compiler?

Ralf

---------------------------------------------------------
 >aldor -fx -laldor aaa.as
"aaa.as", line 9:   baz(i: Integer): Integer == foo((x +-> x-1), i);
                   ...................................^
[L9 C36] #1 (Error) Expecting a comma separated list of parameters.

---rhxBEGIN aaa.as
#include "aldor"
Aaa: with {
   foo: (Integer -> Integer, Integer) -> Integer;
   bar: Integer -> Integer;
   bar: Integer -> Integer;
} == add {
   foo(f: Integer->Integer, i: Integer): Integer == f i;
   bar(i: Integer): Integer == foo((x: Integer): Integer +-> x+1, i);
   baz(i: Integer): Integer == foo((x +-> x-1), i);
}
main(): () == {
   import from String, Character, TextWriter, Integer, Aaa;
   stdout << foo(bar, 1) << newline;
   stdout << bar 1 << newline;
   stdout << bar 1 << newline;
}
main();
---rhxEND aaa.as



More information about the Aldor-l mailing list