Changelog of @hackage/egison 4.1.3

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

  • Renamed f.pi into pi.

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.