collecting requirements for FDs

Ross Paterson ross at
Mon Apr 10 19:43:18 EDT 2006

The favourite customer for FDs has been the monad transformer library.
(There are at least two versions, but they have the same requirements.)

In this library, all the dependencies are full, i.e. involve all (both)
the arguments of the class, e.g.

	class (Monoid w, Monad m) => MonadWriter w m | m -> w

Instances of these classes are of two kinds:

1) Base cases: the range argument is a variable that occurs in the domain
   argument, e.g.

	instance (Monoid w, Monad m) => MonadWriter w (WriterT w m)

2) Inductive definitions: the range argument is a variable that is
   determined by variables in the domain argument via an FD (on the
   same class) in the context of the instance, e.g.

	instance (Error e, MonadWriter w m) => MonadWriter w (ErrorT e m)

What other libraries should Haskell' support, and what are their

More information about the Haskell-prime mailing list