cluss
Version 0.1 revision 0 uploaded by Kinokkory.
Package meta
- Synopsis
- Simple Alternative to Type Classes
- Description
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 useIn
with a list of "type patterns" likeIn [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 constraintIn [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.
- Author
- Yusuke Matsushita
- Bug reports
- https://github.com/Kinokkory/cluss/issues
- Category
- type system, constraints
- Copyright
- Copyright (C) 2014 Yusuke Matsushita
- Homepage
- https://github.com/Kinokkory/cluss
- Maintainer
- Yusuke Matsushita <y.skm24t@gmail.com>
- Package URL
- n/a
- Stability
- provinsional