On Mon, 19 May 2003 11:45:47 +0100 Graham Klyne <gk@ninebynine.org> wrote:
At 17:54 18/05/03 -0400, Derek Elkins wrote:
What does the vertical bar "|" in the class declaration mean? I can't find this use mentioned in the Haskell report or the GHC type system extensions.
It's mentioned in GHC's type extensions, but only as a reference to a paper. The '| m -> s' is a functional dependency.
OK, got it, thanks to everyone for help and suggestions.
Here are a couple of small notes/suggestions for the community's consideration (pending more complete documentation):
(1) It may help if the brief section in the GHC libraries pages hinted at the syntax. That would have helped me to identify the usage. e.g. add something like this to http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html... [[ Functional dependencies are introduced by a vertical bar in the syntax of a class declaration; e.g. "class (Monad m) => MonadState s m | m -> s where ...". ]]
I'd like documentation on the syntax at all as implemented. I don't remember the paper being to clear about more involved cases.
(2) I note that the wiki page at http://haskell.org/hawiki/FunDeps mentions Mark Jones paper thus "See the paper[1] by Mark P. Jones", but I see no actual reference for the citation [1]. I guess it's the same as that referenced by the GHC user guide, i.e. http://www.cse.ogi.edu/~mpj/pubs/fundeps.html ?
Old style links like that were lost when the Haskell Wiki was updated, just fix things like that as you come across them.