Hello Haskell-Café,
I am happy to announce the Express library for Haskell.
https://github.com/rudymatela/express
Express allows manipulation of dynamically typed Haskell expressions. It is similar to Data.Dynamic but with support for encoding applications and variables. It provides an Expr type and over a hundred functions for building, evaluating, comparing, folding, canonicalizing and matching Exprs. Express' Haddock documentation is pretty comprehensive.
The project README has a few examples showing how to use Express to:
create heterogeneous lists;
list valid applications between expressions;
generalize counterexamples;
automatically generate test properties.
This library has its origins as an internal module of Speculate and Extrapolate, I am now releasing it separetely hoping that it could be used for other purposes.
To install it, just:
$ cabal update
$ cabal install express
Then you’re ready to use it:
$ ghci
> import Data.Express
> let true = val True
> :t true
true :: Expr
> print true
True :: Bool
> eval False true
True
–
Rudy