packages feed

compound-types 0.1.1.1 → 0.1.2

raw patch · 8 files changed

+166/−49 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ CompoundTypes.Lazy: Product6 :: v1 -> v2 -> v3 -> v4 -> v5 -> v6 -> Product6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Product7 :: v1 -> v2 -> v3 -> v4 -> v5 -> v6 -> v7 -> Product7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum6_1 :: v1 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum6_2 :: v2 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum6_3 :: v3 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum6_4 :: v4 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum6_5 :: v5 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum6_6 :: v6 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: Sum7_1 :: v1 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_2 :: v2 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_3 :: v3 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_4 :: v4 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_5 :: v5 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_6 :: v6 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: Sum7_7 :: v7 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: data Product6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: data Product7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Lazy: data Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Lazy: data Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Product6 :: !v1 -> !v2 -> !v3 -> !v4 -> !v5 -> !v6 -> Product6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Product7 :: !v1 -> !v2 -> !v3 -> !v4 -> !v5 -> !v6 -> !v7 -> Product7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum6_1 :: !v1 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum6_2 :: !v2 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum6_3 :: !v3 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum6_4 :: !v4 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum6_5 :: !v5 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum6_6 :: !v6 -> Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: Sum7_1 :: !v1 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_2 :: !v2 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_3 :: !v3 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_4 :: !v4 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_5 :: !v5 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_6 :: !v6 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: Sum7_7 :: !v7 -> Sum7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: data Product6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: data Product7 v1 v2 v3 v4 v5 v6 v7
+ CompoundTypes.Strict: data Sum6 v1 v2 v3 v4 v5 v6
+ CompoundTypes.Strict: data Sum7 v1 v2 v3 v4 v5 v6 v7
- CompoundTypes.Lazy: Product2 :: a -> b -> Product2 a b
+ CompoundTypes.Lazy: Product2 :: v1 -> v2 -> Product2 v1 v2
- CompoundTypes.Lazy: Product3 :: a -> b -> c -> Product3 a b c
+ CompoundTypes.Lazy: Product3 :: v1 -> v2 -> v3 -> Product3 v1 v2 v3
- CompoundTypes.Lazy: Product4 :: a -> b -> c -> d -> Product4 a b c d
+ CompoundTypes.Lazy: Product4 :: v1 -> v2 -> v3 -> v4 -> Product4 v1 v2 v3 v4
- CompoundTypes.Lazy: Product5 :: a -> b -> c -> d -> e -> Product5 a b c d e
+ CompoundTypes.Lazy: Product5 :: v1 -> v2 -> v3 -> v4 -> v5 -> Product5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: Sum2_1 :: a -> Sum2 a b
+ CompoundTypes.Lazy: Sum2_1 :: v1 -> Sum2 v1 v2
- CompoundTypes.Lazy: Sum2_2 :: b -> Sum2 a b
+ CompoundTypes.Lazy: Sum2_2 :: v2 -> Sum2 v1 v2
- CompoundTypes.Lazy: Sum3_1 :: a -> Sum3 a b c
+ CompoundTypes.Lazy: Sum3_1 :: v1 -> Sum3 v1 v2 v3
- CompoundTypes.Lazy: Sum3_2 :: b -> Sum3 a b c
+ CompoundTypes.Lazy: Sum3_2 :: v2 -> Sum3 v1 v2 v3
- CompoundTypes.Lazy: Sum3_3 :: c -> Sum3 a b c
+ CompoundTypes.Lazy: Sum3_3 :: v3 -> Sum3 v1 v2 v3
- CompoundTypes.Lazy: Sum4_1 :: a -> Sum4 a b c d
+ CompoundTypes.Lazy: Sum4_1 :: v1 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Lazy: Sum4_2 :: b -> Sum4 a b c d
+ CompoundTypes.Lazy: Sum4_2 :: v2 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Lazy: Sum4_3 :: c -> Sum4 a b c d
+ CompoundTypes.Lazy: Sum4_3 :: v3 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Lazy: Sum4_4 :: d -> Sum4 a b c d
+ CompoundTypes.Lazy: Sum4_4 :: v4 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Lazy: Sum5_1 :: a -> Sum5 a b c d e
+ CompoundTypes.Lazy: Sum5_1 :: v1 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: Sum5_2 :: b -> Sum5 a b c d e
+ CompoundTypes.Lazy: Sum5_2 :: v2 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: Sum5_3 :: c -> Sum5 a b c d e
+ CompoundTypes.Lazy: Sum5_3 :: v3 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: Sum5_4 :: d -> Sum5 a b c d e
+ CompoundTypes.Lazy: Sum5_4 :: v4 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: Sum5_5 :: e -> Sum5 a b c d e
+ CompoundTypes.Lazy: Sum5_5 :: v5 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: data Product2 a b
+ CompoundTypes.Lazy: data Product2 v1 v2
- CompoundTypes.Lazy: data Product3 a b c
+ CompoundTypes.Lazy: data Product3 v1 v2 v3
- CompoundTypes.Lazy: data Product4 a b c d
+ CompoundTypes.Lazy: data Product4 v1 v2 v3 v4
- CompoundTypes.Lazy: data Product5 a b c d e
+ CompoundTypes.Lazy: data Product5 v1 v2 v3 v4 v5
- CompoundTypes.Lazy: data Sum2 a b
+ CompoundTypes.Lazy: data Sum2 v1 v2
- CompoundTypes.Lazy: data Sum3 a b c
+ CompoundTypes.Lazy: data Sum3 v1 v2 v3
- CompoundTypes.Lazy: data Sum4 a b c d
+ CompoundTypes.Lazy: data Sum4 v1 v2 v3 v4
- CompoundTypes.Lazy: data Sum5 a b c d e
+ CompoundTypes.Lazy: data Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Product2 :: !a -> !b -> Product2 a b
+ CompoundTypes.Strict: Product2 :: !v1 -> !v2 -> Product2 v1 v2
- CompoundTypes.Strict: Product3 :: !a -> !b -> !c -> Product3 a b c
+ CompoundTypes.Strict: Product3 :: !v1 -> !v2 -> !v3 -> Product3 v1 v2 v3
- CompoundTypes.Strict: Product4 :: !a -> !b -> !c -> !d -> Product4 a b c d
+ CompoundTypes.Strict: Product4 :: !v1 -> !v2 -> !v3 -> !v4 -> Product4 v1 v2 v3 v4
- CompoundTypes.Strict: Product5 :: !a -> !b -> !c -> !d -> !e -> Product5 a b c d e
+ CompoundTypes.Strict: Product5 :: !v1 -> !v2 -> !v3 -> !v4 -> !v5 -> Product5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Sum2_1 :: !a -> Sum2 a b
+ CompoundTypes.Strict: Sum2_1 :: !v1 -> Sum2 v1 v2
- CompoundTypes.Strict: Sum2_2 :: !b -> Sum2 a b
+ CompoundTypes.Strict: Sum2_2 :: !v2 -> Sum2 v1 v2
- CompoundTypes.Strict: Sum3_1 :: !a -> Sum3 a b c
+ CompoundTypes.Strict: Sum3_1 :: !v1 -> Sum3 v1 v2 v3
- CompoundTypes.Strict: Sum3_2 :: !b -> Sum3 a b c
+ CompoundTypes.Strict: Sum3_2 :: !v2 -> Sum3 v1 v2 v3
- CompoundTypes.Strict: Sum3_3 :: !c -> Sum3 a b c
+ CompoundTypes.Strict: Sum3_3 :: !v3 -> Sum3 v1 v2 v3
- CompoundTypes.Strict: Sum4_1 :: !a -> Sum4 a b c d
+ CompoundTypes.Strict: Sum4_1 :: !v1 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Strict: Sum4_2 :: !b -> Sum4 a b c d
+ CompoundTypes.Strict: Sum4_2 :: !v2 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Strict: Sum4_3 :: !c -> Sum4 a b c d
+ CompoundTypes.Strict: Sum4_3 :: !v3 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Strict: Sum4_4 :: !d -> Sum4 a b c d
+ CompoundTypes.Strict: Sum4_4 :: !v4 -> Sum4 v1 v2 v3 v4
- CompoundTypes.Strict: Sum5_1 :: !a -> Sum5 a b c d e
+ CompoundTypes.Strict: Sum5_1 :: !v1 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Sum5_2 :: !b -> Sum5 a b c d e
+ CompoundTypes.Strict: Sum5_2 :: !v2 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Sum5_3 :: !c -> Sum5 a b c d e
+ CompoundTypes.Strict: Sum5_3 :: !v3 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Sum5_4 :: !d -> Sum5 a b c d e
+ CompoundTypes.Strict: Sum5_4 :: !v4 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: Sum5_5 :: !e -> Sum5 a b c d e
+ CompoundTypes.Strict: Sum5_5 :: !v5 -> Sum5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: data Product2 a b
+ CompoundTypes.Strict: data Product2 v1 v2
- CompoundTypes.Strict: data Product3 a b c
+ CompoundTypes.Strict: data Product3 v1 v2 v3
- CompoundTypes.Strict: data Product4 a b c d
+ CompoundTypes.Strict: data Product4 v1 v2 v3 v4
- CompoundTypes.Strict: data Product5 a b c d e
+ CompoundTypes.Strict: data Product5 v1 v2 v3 v4 v5
- CompoundTypes.Strict: data Sum2 a b
+ CompoundTypes.Strict: data Sum2 v1 v2
- CompoundTypes.Strict: data Sum3 a b c
+ CompoundTypes.Strict: data Sum3 v1 v2 v3
- CompoundTypes.Strict: data Sum4 a b c d
+ CompoundTypes.Strict: data Sum4 v1 v2 v3 v4
- CompoundTypes.Strict: data Sum5 a b c d e
+ CompoundTypes.Strict: data Sum5 v1 v2 v3 v4 v5

Files

compound-types.cabal view
@@ -1,7 +1,7 @@ name:   compound-types version:-  0.1.1.1+  0.1.2 category:   Data, Types, Type System synopsis:
demo/Main.hs view
@@ -8,23 +8,20 @@   putStrLn "This demonstration is all about the compilability"  -- |--- Same as the following type: +-- This function exhibits the benefit of the first-class sum-type+-- being usable as a function parameter. -- --- > Sum3 Int Char Bool-type IntCharBoolSum =-  Int + Char + Bool---- |--- How it can be pattern-matched-intCharBoolSumToText :: IntCharBoolSum -> String-intCharBoolSumToText =+-- It also shows, how we can pattern-match it.+intCharBoolSumToString :: Int + Char + Bool -> String+intCharBoolSumToString =   \case     Sum3_1 int -> "Int: " <> show int     Sum3_2 char -> "Char: " <> show char     Sum3_3 bool -> "Bool: " <> show bool  -- |--- Same as the following type:+-- Following is an example of a more complicated composition,+-- which is the same as the following type: --  -- > Sum3 Int (Product2 Char (Sum2 Bool String)) Char -- 
library/CompoundTypes/Lazy.hs view
@@ -1,8 +1,10 @@ -- |--- Implementations of strict data-structures.+-- Implementations of the lazy data-structures. module CompoundTypes.Lazy (+  -- * Sum-types   module CompoundTypes.Private.Lazy.Sum,+  -- * Product-types   module CompoundTypes.Private.Lazy.Product, ) where
library/CompoundTypes/Private/Lazy/Product.hs view
@@ -1,40 +1,69 @@ module CompoundTypes.Private.Lazy.Product where  -data Product2 a b =-  Product2 a b+data Product2 v1 v2 =+  Product2 v1 v2 -data Product3 a b c =-  Product3 a b c+data Product3 v1 v2 v3 =+  Product3 v1 v2 v3 -data Product4 a b c d =-  Product4 a b c d+data Product4 v1 v2 v3 v4 =+  Product4 v1 v2 v3 v4 -data Product5 a b c d e =-  Product5 a b c d e+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++ -- | -- Automatically derives the product-type of the according arity -- from expressions such as: -- --- > (Int * Char * Bool)+-- > Int * Char * Bool --  -- In that case it will resolve to: --  -- > Product3 Int Char Bool type family (*) a b where+  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 =
library/CompoundTypes/Private/Lazy/Sum.hs view
@@ -1,40 +1,69 @@ module CompoundTypes.Private.Lazy.Sum where  -data Sum2 a b =-  Sum2_1 a | Sum2_2 b+data Sum2 v1 v2 =+  Sum2_1 v1 | Sum2_2 v2 -data Sum3 a b c =-  Sum3_1 a | Sum3_2 b | Sum3_3 c+data Sum3 v1 v2 v3 =+  Sum3_1 v1 | Sum3_2 v2 | Sum3_3 v3 -data Sum4 a b c d =-  Sum4_1 a | Sum4_2 b | Sum4_3 c | Sum4_4 d+data Sum4 v1 v2 v3 v4 =+  Sum4_1 v1 | Sum4_2 v2 | Sum4_3 v3 | Sum4_4 v4 -data Sum5 a b c d e =-  Sum5_1 a | Sum5_2 b | Sum5_3 c | Sum5_4 d | Sum5_5 e+data Sum5 v1 v2 v3 v4 v5 =+  Sum5_1 v1 | Sum5_2 v2 | Sum5_3 v3 | Sum5_4 v4 | Sum5_5 v5 +data Sum6 v1 v2 v3 v4 v5 v6 =+  Sum6_1 v1 | Sum6_2 v2 | Sum6_3 v3 | Sum6_4 v4 | Sum6_5 v5 | Sum6_6 v6++data Sum7 v1 v2 v3 v4 v5 v6 v7 =+  Sum7_1 v1 | Sum7_2 v2 | Sum7_3 v3 | Sum7_4 v4 | Sum7_5 v5 | Sum7_6 v6 | Sum7_7 v7++ -- | -- Automatically derives the sum-type of the according arity -- from expressions such as: -- --- > (Int + Char + Bool)+-- > Int + Char + Bool --  -- In that case it will resolve to: --  -- > Sum3 Int Char Bool type family (+) a b where+  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 =
library/CompoundTypes/Private/Strict/Product.hs view
@@ -1,40 +1,69 @@ module CompoundTypes.Private.Strict.Product where  -data Product2 a b =-  Product2 !a !b+data Product2 v1 v2 =+  Product2 !v1 !v2 -data Product3 a b c =-  Product3 !a !b !c+data Product3 v1 v2 v3 =+  Product3 !v1 !v2 !v3 -data Product4 a b c d =-  Product4 !a !b !c !d+data Product4 v1 v2 v3 v4 =+  Product4 !v1 !v2 !v3 !v4 -data Product5 a b c d e =-  Product5 !a !b !c !d !e+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++ -- | -- Automatically derives the product-type of the according arity -- from expressions such as: -- --- > (Int * Char * Bool)+-- > Int * Char * Bool --  -- In that case it will resolve to: --  -- > Product3 Int Char Bool type family (*) a b where+  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 =
library/CompoundTypes/Private/Strict/Sum.hs view
@@ -1,40 +1,69 @@ module CompoundTypes.Private.Strict.Sum where  -data Sum2 a b =-  Sum2_1 !a | Sum2_2 !b+data Sum2 v1 v2 =+  Sum2_1 !v1 | Sum2_2 !v2 -data Sum3 a b c =-  Sum3_1 !a | Sum3_2 !b | Sum3_3 !c+data Sum3 v1 v2 v3 =+  Sum3_1 !v1 | Sum3_2 !v2 | Sum3_3 !v3 -data Sum4 a b c d =-  Sum4_1 !a | Sum4_2 !b | Sum4_3 !c | Sum4_4 !d+data Sum4 v1 v2 v3 v4 =+  Sum4_1 !v1 | Sum4_2 !v2 | Sum4_3 !v3 | Sum4_4 !v4 -data Sum5 a b c d e =-  Sum5_1 !a | Sum5_2 !b | Sum5_3 !c | Sum5_4 !d | Sum5_5 !e+data Sum5 v1 v2 v3 v4 v5 =+  Sum5_1 !v1 | Sum5_2 !v2 | Sum5_3 !v3 | Sum5_4 !v4 | Sum5_5 !v5 +data Sum6 v1 v2 v3 v4 v5 v6 =+  Sum6_1 !v1 | Sum6_2 !v2 | Sum6_3 !v3 | Sum6_4 !v4 | Sum6_5 !v5 | Sum6_6 !v6++data Sum7 v1 v2 v3 v4 v5 v6 v7 =+  Sum7_1 !v1 | Sum7_2 !v2 | Sum7_3 !v3 | Sum7_4 !v4 | Sum7_5 !v5 | Sum7_6 !v6 | Sum7_7 !v7++ -- | -- Automatically derives the sum-type of the according arity -- from expressions such as: -- --- > (Int + Char + Bool)+-- > Int + Char + Bool --  -- In that case it will resolve to: --  -- > Sum3 Int Char Bool type family (+) a b where+  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 =
library/CompoundTypes/Strict.hs view
@@ -1,8 +1,10 @@ -- |--- Implementations of strict data-structures.+-- Implementations of the strict data-structures. module CompoundTypes.Strict (+  -- * Sum-types   module CompoundTypes.Private.Strict.Sum,+  -- * Product-types   module CompoundTypes.Private.Strict.Product, ) where