cluss: simple alternative to type classes

[ bsd3, constraints, library, type-system ] [ Propose Tags ]

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 a, 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". The constraint 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]
License BSD-3-Clause
Copyright Copyright (C) 2014 Yusuke Matsushita
Author Yusuke Matsushita
Maintainer Yusuke Matsushita <y.skm24t@gmail.com>
Revised Revision 4 made by Kinokkory at Sun Oct 5 12:05:45 UTC 2014
Category type system, constraints
Home page https://github.com/Kinokkory/cluss
Bug tracker https://github.com/Kinokkory/cluss/issues
Source repo head: git clone git@github.com:Kinokkory/cluss.git
Uploaded by Kinokkory at Fri Oct 3 14:01:20 UTC 2014
Distributions NixOS:0.3
Downloads 2942 total (103 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

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'.

Maintainer's Corner

For package maintainers and hackage trustees