Changelog
Latest
New Features
- Added binary function notation for arbitrary 2-ary functions. (#260)
> let mod x y := x % y in 103 `mod` 10
3
Backward-incompatible Changes
- Swapped the notation for
QuoteExpr
and QuoteSymbolExpr
. (#262)
> `(a + b) + `(a + b) -- QuoteExpr, which prevents (a + b) from unpacking
2 * '(a + b)
> 'exp x -- QuoteSymbolExpr
exp x
- Changed the specification of
generateTensor
so that the generation function takes indices as a collection. (#267)
4.1.2
- Nothing changed (bumped version of
sweet-egison
package)
4.1.1
- Fix compilation issue with GHC 8.10 (#248)
4.1.0
New Features
> 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
.
-- Invalid
io isEof ()
-- OK
io (isEOF ())
io $ isEOF ()
Miscellaneous
4.0.3
4.0.1
- Fixed a bug of not-patterns inside sequential patterns.
- Deprecated
procedure
(replace them with anonymous function)
4.0.0
- Enabled the Haskell-like new syntax by default.