Am Freitag, 7. Oktober 2005 06:32 schrieb Cale Gibbard:
> That | m -> s reads "where m determines s", and means that there can
> be at most one s (here, the state type) for a given m (the monad
> type). This is used in type inference and checking to ensure that the
> type of state being carried around by a monad in MonadState is well
> defined, and to prevent you from having to annotate the operations in
> MonadState with type signatures. (To tell which type s to use.)
What you can express via this syntax is called functional dependencies (in
analogy to functional dependencies in database theory). One should note that
functional dependencies and even multi-parameter type classes are an
extension to Haskell 98 and not part of Haskell 98 which is why you haven't
read about them in the tutorial.
> [...]
Best wishes,
Wolfgang