Safe Haskell | None |
---|---|
Language | Haskell2010 |
Implementations of strict data-structures.
Documentation
type family a + b where ... infixl 0 Source #
Automatically derives the sum-type of the according arity from expressions such as:
(Int + Char + Bool)
In that case it will resolve to:
Sum3 Int Char Bool
(Sum4 v1 v2 v3 v4) + v5 = Sum5 v1 v2 v3 v4 v5 | |
(Sum3 v1 v2 v3) + (Sum2 v4 v5) = Sum5 v1 v2 v3 v4 v5 | |
(Sum3 v1 v2 v3) + v4 = Sum4 v1 v2 v3 v4 | |
(Sum2 v1 v2) + (Sum3 v3 v4 v5) = Sum5 v1 v2 v3 v4 v5 | |
(Sum2 v1 v2) + (Sum2 v3 v4) = Sum4 v1 v2 v3 v4 | |
(Sum2 v1 v2) + v3 = Sum3 v1 v2 v3 | |
v1 + (Sum4 v2 v3 v4 v5) = Sum5 v1 v2 v3 v4 v5 | |
v1 + (Sum3 v2 v3 v4) = Sum4 v1 v2 v3 v4 | |
v1 + (Sum2 v2 v3) = Sum3 v1 v2 v3 | |
v1 + v2 = Sum2 v1 v2 |
type family a * b where ... infixl 1 Source #
Automatically derives the product-type of the according arity from expressions such as:
(Int * Char * Bool)
In that case it will resolve to:
Product3 Int Char Bool
(Product4 v1 v2 v3 v4) * v5 = Product5 v1 v2 v3 v4 v5 | |
(Product3 v1 v2 v3) * (Product2 v4 v5) = Product5 v1 v2 v3 v4 v5 | |
(Product3 v1 v2 v3) * v4 = Product4 v1 v2 v3 v4 | |
(Product2 v1 v2) * (Product3 v3 v4 v5) = Product5 v1 v2 v3 v4 v5 | |
(Product2 v1 v2) * (Product2 v3 v4) = Product4 v1 v2 v3 v4 | |
(Product2 v1 v2) * v3 = Product3 v1 v2 v3 | |
v1 * (Product4 v2 v3 v4 v5) = Product5 v1 v2 v3 v4 v5 | |
v1 * (Product3 v2 v3 v4) = Product4 v1 v2 v3 v4 | |
v1 * (Product2 v2 v3) = Product3 v1 v2 v3 | |
v1 * v2 = Product2 v1 v2 |