You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allowed let expression to decompose data. Unlike match expressions (of Egison), this does not require matchers and the decomposition pattern is limited.
> let (x :: _) := [1, 2, 3] in x
1
> let (x :: _) := [] in x
Primitive data pattern match failed
stack trace: <stdin>
Enabled data decomposition at lambda arguments.
> (\(x, _) -> x) (1, 2)
1
Implemented partial application.
> let add x y := x + y in map (add 1) [1, 2, 3]
[2, 3, 4]
Huge speedup in mathematical programs:
Reimplemented math normalization, which was originally implemented in Egison, to the interpreter in Haskell.
Implemented lazy evaluation on tensor elements.
Added new syntax for symmetric / anti-symmetric tensors.
Backward-incompatible Changes
Changed the syntax to start definitions with def keyword.
def x := 1
io was previously defined as a syntastic constructs, but it is changed into a primitive function.
Namely, users will need to wrap the arguments to io in a parenthesis, or insert $ after io.