cluss: simple alternative to type classes
A cluss enables you to achieve function overloading, or ad-hoc polymorphism, without creating a new type class.
In order to give ad-hoc polymorphism to a type variable
you simply use
In with a list of "type patterns" like
In [Type T, ...] a,
which indicates that the type matches some of the patterns;
which is analogous to a type class indicating that a type matches some of its "instances".
In [Type T, ...] a is what we call a "cluss".
Cluss instances are closed and cluss methods are open, unlike type classes, whose instances are open and whose methods are closed.
Clusses can easily be used in a nested way, and can even be recursive, just like recursive type classes, and therefore clusses are expressive enough to imitate Haskell-98-style type classes.
More information can be found in the Haddock or the comments in the source code. The updated haddock is here: http://kinokkory.github.io/cluss/.
|Versions [faq]||0.1, 0.2, 0.3|
|Dependencies||base (==4.*) [details]|
|Copyright||Copyright (C) 2014 Yusuke Matsushita|
|Maintainer||Yusuke Matsushita <email@example.com>|
|Revised||Revision 4 made by Kinokkory at Sun Oct 5 12:05:45 UTC 2014|
|Category||type system, constraints|
|Source repo||head: git clone firstname.lastname@example.org:Kinokkory/cluss.git|
|Uploaded||by Kinokkory at Fri Oct 3 14:01:20 UTC 2014|
|Downloads||2942 total (103 in the last 30 days)|
|Rating||(no votes yet) [estimated by Bayesian average]|
Docs uploaded by user
Build status unknown [no reports yet]
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees