The latest version of cluss is 0.3-0.

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

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

Components