Safe Haskell | None |
---|---|
Language | Haskell2010 |
Implementations of the lazy data-structures.
- data Sum2 v1 v2
- data Sum3 v1 v2 v3
- data Sum4 v1 v2 v3 v4
- data Sum5 v1 v2 v3 v4 v5
- data Sum6 v1 v2 v3 v4 v5 v6
- data Sum7 v1 v2 v3 v4 v5 v6 v7
- type family a + b where ...
- data Product2 v1 v2 = Product2 v1 v2
- data Product3 v1 v2 v3 = Product3 v1 v2 v3
- data Product4 v1 v2 v3 v4 = Product4 v1 v2 v3 v4
- data Product5 v1 v2 v3 v4 v5 = Product5 v1 v2 v3 v4 v5
- data Product6 v1 v2 v3 v4 v5 v6 = Product6 v1 v2 v3 v4 v5 v6
- data Product7 v1 v2 v3 v4 v5 v6 v7 = Product7 v1 v2 v3 v4 v5 v6 v7
- type family a * b where ...
Sum-types
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
(Sum6 v1 v2 v3 v4 v5 v6) + v7 = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
(Sum5 v1 v2 v3 v4 v5) + (Sum2 v6 v7) = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
(Sum5 v1 v2 v3 v4 v5) + v6 = Sum6 v1 v2 v3 v4 v5 v6 | |
(Sum4 v1 v2 v3 v4) + (Sum3 v5 v6 v7) = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
(Sum4 v1 v2 v3 v4) + (Sum2 v5 v6) = Sum6 v1 v2 v3 v4 v5 v6 | |
(Sum4 v1 v2 v3 v4) + v5 = Sum5 v1 v2 v3 v4 v5 | |
(Sum3 v1 v2 v3) + (Sum4 v4 v5 v6 v7) = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
(Sum3 v1 v2 v3) + (Sum3 v4 v5 v6) = Sum6 v1 v2 v3 v4 v5 v6 | |
(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) + (Sum5 v3 v4 v5 v6 v7) = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
(Sum2 v1 v2) + (Sum4 v3 v4 v5 v6) = Sum6 v1 v2 v3 v4 v5 v6 | |
(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 + (Sum6 v2 v3 v4 v5 v6 v7) = Sum7 v1 v2 v3 v4 v5 v6 v7 | |
v1 + (Sum5 v2 v3 v4 v5 v6) = Sum6 v1 v2 v3 v4 v5 v6 | |
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 |
Product-types
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
(Product6 v1 v2 v3 v4 v5 v6) * v7 = Product7 v1 v2 v3 v4 v5 v6 v7 | |
(Product5 v1 v2 v3 v4 v5) * (Product2 v6 v7) = Product7 v1 v2 v3 v4 v5 v6 v7 | |
(Product5 v1 v2 v3 v4 v5) * v6 = Product6 v1 v2 v3 v4 v5 v6 | |
(Product4 v1 v2 v3 v4) * (Product3 v5 v6 v7) = Product7 v1 v2 v3 v4 v5 v6 v7 | |
(Product4 v1 v2 v3 v4) * (Product2 v5 v6) = Product6 v1 v2 v3 v4 v5 v6 | |
(Product4 v1 v2 v3 v4) * v5 = Product5 v1 v2 v3 v4 v5 | |
(Product3 v1 v2 v3) * (Product4 v4 v5 v6 v7) = Product7 v1 v2 v3 v4 v5 v6 v7 | |
(Product3 v1 v2 v3) * (Product3 v4 v5 v6) = Product6 v1 v2 v3 v4 v5 v6 | |
(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) * (Product5 v3 v4 v5 v6 v7) = Product7 v1 v2 v3 v4 v5 v6 v7 | |
(Product2 v1 v2) * (Product4 v3 v4 v5 v6) = Product6 v1 v2 v3 v4 v5 v6 | |
(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 * (Product6 v2 v3 v4 v5 v6 v7) = Product7 v1 v2 v3 v4 v5 v6 v7 | |
v1 * (Product5 v2 v3 v4 v5 v6) = Product6 v1 v2 v3 v4 v5 v6 | |
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 |