- In the paper, variable bindings are introduced
by a
var keyword; the keyword is omitted in this
implementation.
-
Tables are declared differently. In the implementation, tables
are just values, assigned like any other:
factorials = Table "factorials" (i : Int, f: Int) from db;
In the paper, tables are "declared" and the variable has the same name
as the table:
table factorials (i : Int, f: Int) database db;
- The syntax for sorting a table is different. In the
implementation, we offer a
order keyword on
Table declarations:
Table "factorials" (...) order [ ... ] from db;
In the paper, comprehensions rather than tables are given an orderby
clause:
for (x <- factorials)
orderby ( ... ) ...
- In some examples, we use slashes to delimit a regular expression,
and use the tilde as the regular expression matching operator:
t ~ /[0-9]+/
Regular expressions are not yet supported in the implementation.
-
The draggable lists demo uses a
SwapNodes DOM operation
that is not described in the paper. SwapNodes accepts
references to two nodes in the DOM tree and swaps their positions in
the tree.
- In the paper the cases of a "receive" expression begin with the "case" keyword.
receive {
case Label1 -> body1;
case Label2 -> body2;
}
In the implementation, the case keyword is not used:
receieve {
Label1 -> body1
Label2 -> body2
}
- In the paper,
spawn takes a proper expression as its argument:
spawn { expr };
In the implementation, spawn is an ordinary function and it takes a
functional value as its argument:
fun f { expr }
...
spawn(f);