This is a simple package and should be easy to install. You should
be able to use one of the following standard methods to install it.

-- With cabal-install and without the source:
$> cabal install unification-fd

-- With cabal-install and with the source already:
$> cd unification-fd
$> cabal install

-- Without cabal-install, but with the source already:
$> cd unification-fd
$> runhaskell Setup.hs configure --user
$> runhaskell Setup.hs build
$> runhaskell Setup.hs test
$> runhaskell Setup.hs haddock --hyperlink-source
$> runhaskell Setup.hs copy
$> runhaskell Setup.hs register

The test step is optional and currently does nothing. The Haddock
step is also optional. If you see some stray lines that look like

mkUsageInfo: internal name? t{tv a7XM}

Feel free to ignore them. They shouldn't cause any problems, even
though they're unsightly. This should be fixed in newer versions
of GHC. For more details, see:


If you get a bunch of type errors about there being no MonadLogic
instance for StateT, this means that your copy of the logict library
is not compiled against the same mtl that we're using. To fix this,
update logict to use the same mtl.


An attempt has been made to keep this library as portable as possible,
but it does rely on some common language extensions (i.e., ones
implemented by Hugs as well as GHC) as well as a couple which are
only known to be supported by GHC. All required language extensions

FunctionalDependencies -- Alas, necessary for type inference
FlexibleContexts -- Necessary for practical use of MPTCs
FlexibleInstances -- Necessary for practical use of MPTCs
UndecidableInstances -- Needed for Show instances due to two-level types

----------------------------------------------------------- fin.

Changes (2015-05-30):
0.10.0 (2015-03-29):
- Cleaned up things to compile cleanly for GHC 7.10
- Cleaned up deprecation warnings re Control.Monad.Error
- Control.Monad.EitherK: liberalized Monad restriction to
Applicative where possible.
- Control.Monad.MaybeK: liberalized Monad restriction to
Applicative where possible.
- Control.Unification.Types: Completely revamped the old
UnificationFailure data type as the new UFailure data type
and Fallible type class.

0.9.0 (2014-06-03):
- Control.Unification.Types: changed the fundeps on BindingMonad
and RankedBindingMonad so that things compile under GHC 7.8.2
- Data.Functor.Fixedpoint: eta-expanded RULES to avoid GHC >=
7.8 warnings about them potentially not firing due to (.)
being inlined first.
0.8.1 (2014-05-27):
- Control.Unification.Types: added Functor, Foldable, and
Traversable instances for UnificationFailure. (h/t Graham Rogers)
0.8.0 (2012-07-11):
- Control.Unification.Types: Changed the type of Unifiable.zipMatch
0.7.0 (2012-03-19):
- Renamed MutTerm to UTerm (and MutVar to UVar)
- Replaced the Variable.eqVar method by plain old Eq.(==)
- Control.Unification: added getFreeVarsAll, applyBindingsAll,
- Swapped type argument order for MutTerm, so that it can be a
functor etc. Also changed BindingMonad, UnificationFailure,
Rank, and RankedBindingMonad for consistency.
0.6.0 (2012-02-17):
- Removed the phantom type argument for Variables.
0.5.0 (2011-07-12):
- Moved UnificationFailure to Control.Unification.Types
- Renamed NonUnifiable to TermMismatch
- Control.Unification: exposed fullprune, semiprune, occursIn
- Control.Unification: added unifyOccurs, subsumes
- Control.Unification: (re)added symbolic names for binary operators
0.4.0 (2011-07-07):
- Removed heterogeneous unification, and rewrote practically everything.
- Added semipruning instead of full pruning.
- Added visited-sets instead of occurs-checks.
- Added weightedness to path compression (a la union--find).
- This is the version emailed for the 2011-07-07 talk at McMaster.
0.3.6 (2011-06-18):
- Forked from the Dyna2 project.
Depends on 4 packages:
Used by 1 package:
comments powered byDisqus