packages feed

CPL-0.2.0: CHANGELOG.md

0.2.0 (2026-02-06)
-------------------------------

* Add `show function <name>` subcommand to display information of functions including functors, factorizers, and user-defined parameterized morphisms:
    ```
    cpl> show function exp  
    f0: *c -> *a  f1: *b -> *d
    ------------------------------------
    exp(f0,f1): exp(*a,*b) -> exp(*c,*d)
    cpl> show function curry
    f0: prod(*a,*b) -> *c
    ---------------------------
    curry(f0): *a -> exp(*b,*c)
    cpl> let uncurry(f) = eval . prod(f, I)
    cpl> show function uncurry
    f: *a -> exp(*b,*c)
    -----------------------------
    uncurry(f): prod(*a,*b) -> *c
    ```
* Add WebAssembly support for browser-based CPL interpreter (<https://msakai.github.io/cpl/>)
* Add tutorials both in English and Japanese
* Accept `id` as a synonym for `I` (identity morphism)
* Allow the omission of the `is` keyword in data type definitions
* Assume that files loaded via the `load` command use UTF-8 encoding
* Remove readline support (the `Readline` cabal flag and `USE_READLINE_PACKAGE` code path)
* Drop support for GHC <9.2 (base <4.16)
* Stop providing MSI installer

0.1.0 (2025-10-29)
-------------------------------

* Update Cabal-Version requirement from >=1.10 to 2.2
* Require `mtl` >=2.2.1 for `Control.Monad.Except`
* Fix compilation error on recent `mtl` package

0.0.9 (2018-02-16)
-------------------------------

* Use `Control.Monad.Except` instead of deprecated Control.Monad.Error

0.0.8 (2016-01-14)
-------------------------------

* "→" can be used instead of "->"
* GHC-7.10 support
* Add windows installer

0.0.7 (2014-08-13)
-------------------------------

* Clean up internals
* Enable `-fReadline` and `-fHaskeline` by default

0.0.6 (2009-10-26)
-------------------------------

Readline/Haskeline support.

0.0.4
-------------------------------

Function defintions are added.

Examples:

    > let uncurry(f) = eval . prod(f, I)
    uncurry(f) = eval.prod(f,I)
    f: *a -> exp(*b,*c)
    -----------------------------
    uncurry(f): prod(*a,*b) -> *c

    > let primrec(f,g) = pi2.pr(pair(0,f), pair(s.pi1, g))
    primrec(f,g) = pi2.pr(pair(0,f),pair(s.pi1,g))
    f: 1 -> *a  g: prod(nat,*a) -> *a
    ---------------------------------
    primrec(f,g): nat -> *a