collecting requirements for FDs

Ross Paterson ross at soi.city.ac.uk
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
requirements?



More information about the Haskell-prime mailing list