Concepts provided by the library.

 Applicative 
 The Applicative concept represents Functor s with the ability to lift values and combine computations.


 Comonad 
 The Comonad concept represents contextsensitive computations and data.


 Comparable 
 The Comparable concept defines equality and inequality.


 Constant 
 The Constant concept represents data that can be manipulated at compiletime.


 Euclidean Ring 
 The EuclideanRing concept represents a commutative Ring that can also be endowed with a division algorithm.


 Foldable 
 The Foldable concept represents data structures that can be reduced to a single value.


 Functor 
 The Functor concept represents types that can be mapped over.


 Group 
 The Group concept represents Monoid s where all objects have an inverse w.r.t. the Monoid 's binary operation.


 Hashable 
 The Hashable concept represents objects that can be normalized to a typelevel hash.


 Iterable 
 The Iterable concept represents data structures supporting external iteration.


 Logical 
 The Logical concept represents types with a truth value.


 Metafunction 
 A Metafunction is a function that takes hana::type s as inputs and returns a hana::type as output.


 Monad 
 The Monad concept represents Applicative s with the ability to flatten nested levels of structure.


 MonadPlus 
 The MonadPlus concept represents Monads with a monoidal structure.


 Monoid 
 The Monoid concept represents data types with an associative binary operation that has an identity.


 Orderable 
 The Orderable concept represents totally ordered data types.


 Product 
 Represents types that are generic containers of two elements.


 Ring 
 The Ring concept represents Group s that also form a Monoid under a second binary operation that distributes over the first.


 Searchable 
 The Searchable concept represents structures that can be searched.


 Sequence 
 The Sequence concept represents generic indexbased sequences.


 Struct 
 The Struct concept represents struct like userdefined types.

