-- | -- Module : Test.Extrapolate.TypeBinding -- Copyright : (c) 2017 Rudy Matela -- License : 3-Clause BSD (see the file LICENSE) -- Maintainer : Rudy Matela -- -- This module is part of Extrapolate, -- a library for generalization of counter-examples. -- -- Some type binding operators that are useful when defining Generalizable -- instances. module Test.Extrapolate.TypeBinding ( argTy1of1 , argTy1of2, argTy2of2 , argTy1of3, argTy2of3, argTy3of3 , argTy1of4, argTy2of4, argTy3of4, argTy4of4 , argTy1of5, argTy2of5, argTy3of5, argTy4of5, argTy5of5 , argTy1of6, argTy2of6, argTy3of6, argTy4of6, argTy5of6, argTy6of6 ) where -- TODO: reexport LeanCheck's typebinding operators argTypes0 :: a -> a argTypes0 f = f argTypes1 :: (a -> b) -> a -> (a -> b) argTypes1 f _ = f argTypes2 :: (a -> b -> c) -> a -> b -> (a -> b -> c) argTypes2 f _ _ = f argTypes3 :: (a -> b -> c -> d) -> a -> b -> c -> (a -> b -> c -> d) argTypes3 f _ _ _ = f argTypes4 :: (a -> b -> c -> d -> e) -> a -> b -> c -> d -> (a -> b -> c -> d -> e) argTypes4 f _ _ _ _ = f argTypes5 :: (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> (a -> b -> c -> d -> e -> f) argTypes5 f _ _ _ _ _ = f argTypes6 :: (a -> b -> c -> d -> e -> f -> g) -> a -> b -> c -> d -> e -> f -> (a -> b -> c -> d -> e -> f -> g) argTypes6 f _ _ _ _ _ _ = f argTypes7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> a -> b -> c -> d -> e -> f -> g -> (a -> b -> c -> d -> e -> f -> g -> h) argTypes7 f _ _ _ _ _ _ _ = f argTypes8 :: (a -> b -> c -> d -> e -> f -> g -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> (a -> b -> c -> d -> e -> f -> g -> h -> i) argTypes8 f _ _ _ _ _ _ _ _ = f argTypes9 :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) argTypes9 f _ _ _ _ _ _ _ _ _ = f argTypes10 :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k) argTypes10 f _ _ _ _ _ _ _ _ _ _ = f argTypes11 :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l) argTypes11 f _ _ _ _ _ _ _ _ _ _ _ = f argTypes12 :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m) argTypes12 f _ _ _ _ _ _ _ _ _ _ _ _ = f argTy1of1 :: con a -> a argTy1of1 _ = undefined argTy1of2 :: con a b -> a argTy1of2 _ = undefined argTy2of2 :: con a b -> b argTy2of2 _ = undefined argTy1of3 :: con a b c -> a argTy1of3 _ = undefined argTy2of3 :: con a b c -> b argTy2of3 _ = undefined argTy3of3 :: con a b c -> c argTy3of3 _ = undefined argTy1of4 :: con a b c d -> a argTy1of4 _ = undefined argTy2of4 :: con a b c d -> b argTy2of4 _ = undefined argTy3of4 :: con a b c d -> c argTy3of4 _ = undefined argTy4of4 :: con a b c d -> d argTy4of4 _ = undefined argTy1of5 :: con a b c d e -> a argTy1of5 _ = undefined argTy2of5 :: con a b c d e -> b argTy2of5 _ = undefined argTy3of5 :: con a b c d e -> c argTy3of5 _ = undefined argTy4of5 :: con a b c d e -> d argTy4of5 _ = undefined argTy5of5 :: con a b c d e -> e argTy5of5 _ = undefined argTy1of6 :: con a b c d e f -> a argTy1of6 _ = undefined argTy2of6 :: con a b c d e f -> b argTy2of6 _ = undefined argTy3of6 :: con a b c d e f -> c argTy3of6 _ = undefined argTy4of6 :: con a b c d e f -> d argTy4of6 _ = undefined argTy5of6 :: con a b c d e f -> e argTy5of6 _ = undefined argTy6of6 :: con a b c d e f -> f argTy6of6 _ = undefined