Home

Awesome

Exference

Exference is a Haskell tool for generating expressions from a type, e.g.

Input: (Show b) => (a -> b) -> [a] -> [String]

Output: \ b -> fmap (\ g -> show (b g))

Djinn is a well known tool that does something similar; the main difference is that Exference supports a larger subset of the haskell type system - most prominently type classes. This comes at a cost, however: Exference makes no promise regarding termination. Where Djinn tells you "there are no solutions", exference will keep trying, sometimes stopping with "i could not find any solutions".

Links

Compiling from source

git clone git@github.com:lspitzner/exference.git
cd exference
cabal sandbox init
# note that ghc-7.10 does not work yet;
# i recommend ghc-7.8.4 for now.
cabal install --only-dependencies
cabal configure
cabal build
# and, for example
cabal run -- "(Show b) => (a->b) -> [a] -> [String]"

Alternatively:

git clone git@github.com:lspitzner/exference.git
cd exference
stack build

Usage notes

There are certain types of queries where Exference will not be able to find any / the right solution. Some common current limitations are:

Experimental features

Other known (technical) issues

Contributing

environment

If you want to add new elements to the environment, be careful not to add functions that

and avoid adding functions that

Trivia

IRC

#exference