packages feed

egison-4.1.2: Changelog.md

# Changelog

## Latest

## 4.1.0
### New Features
* Enabled user-defined infixes for expressions and patterns: <https://egison.readthedocs.io/en/latest/reference/basic-syntax.html#infix-declaration>
* 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`.
```
-- Invalid
io isEof ()

-- OK
io (isEOF ())
io $ isEOF ()
```

### Miscellaneous
* Added a command line option `--no-normalize` to turn off math normalization implemented in the standard math library.
* Revived TSV input options: <https://egison.readthedocs.io/en/latest/reference/command-line-options.html#reading-tsv-input>
* Deprecated `redefine`.

## 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.