module Data.Sums where
import Data.Typeable
import Control.Exception
data S0 deriving Typeable
instance Eq S0 where _ == _ = undefined
instance Ord S0 where compare _ _ = undefined
instance Read S0 where readsPrec _ = undefined
instance Show S0 where show _ = undefined
instance Exception S0
data S1 a = S1a a deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a) => Exception (S1 a)
data S2 a b = S2a a | S2b b deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b) => Exception (S2 a b)
data S3 a b c = S3a a | S3b b | S3c c deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c) => Exception (S3 a b c)
data S4 a b c d = S4a a | S4b b | S4c c | S4d d deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable d, Show d) => Exception (S4 a b c d)
data S5 a b c d e = S5a a | S5b b | S5c c | S5d d | S5e e deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable d, Show d, Typeable e, Show e) => Exception (S5 a b c d e)
data S6 a b c d e f = S6a a | S6b b | S6c c | S6d d | S6e e | S6f f deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable d, Show d, Typeable e, Show e, Typeable f, Show f) => Exception (S6 a b c d e f)
data S7 a b c d e f g = S7a a | S7b b | S7c c | S7d d | S7e e | S7f f | S7g g deriving (Eq, Ord, Read, Show, Typeable)
instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable d, Show d, Typeable e, Show e, Typeable f, Show f, Typeable g, Show g) => Exception (S7 a b c d e f g)
data S8 a b c d e f g h = S8a a | S8b b | S8c c | S8d d | S8e e | S8f f | S8g g | S8h h deriving (Eq, Ord, Read, Show)
data S9 a b c d e f g h i = S9a a | S9b b | S9c c | S9d d | S9e e | S9f f | S9g g | S9h h | S9i i deriving (Eq, Ord, Read, Show)
data S10 a b c d e f g h i j = S10a a | S10b b | S10c c | S10d d | S10e e | S10f f | S10g g | S10h h | S10i i | S10j j deriving (Eq, Ord, Read, Show)
data S11 a b c d e f g h i j k = S11a a | S11b b | S11c c | S11d d | S11e e | S11f f | S11g g | S11h h | S11i i | S11j j | S11k k deriving (Eq, Ord, Read, Show)
data S12 a b c d e f g h i j k l = S12a a | S12b b | S12c c | S12d d | S12e e | S12f f | S12g g | S12h h | S12i i | S12j j | S12k k | S12l l deriving (Eq, Ord, Read, Show)
data S13 a b c d e f g h i j k l m = S13a a | S13b b | S13c c | S13d d | S13e e | S13f f | S13g g | S13h h | S13i i | S13j j | S13k k | S13l l | S13m m deriving (Eq, Ord, Read, Show)
data S14 a b c d e f g h i j k l m n = S14a a | S14b b | S14c c | S14d d | S14e e | S14f f | S14g g | S14h h | S14i i | S14j j | S14k k | S14l l | S14m m | S14n n deriving (Eq, Ord, Read, Show)
data S15 a b c d e f g h i j k l m n o = S15a a | S15b b | S15c c | S15d d | S15e e | S15f f | S15g g | S15h h | S15i i | S15j j | S15k k | S15l l | S15m m | S15n n | S15o o deriving (Eq, Ord, Read, Show)
partitionS0 :: [S0] -> ()
partitionS0 _ = ()
partitionS1 :: [S1 a] -> ([a])
partitionS1 = foldr fn ([])
where
fn it (as) = case it of
S1a a -> (a:as)
partitionS2 :: [S2 a b] -> ([a], [b])
partitionS2 = foldr fn ([], [])
where
fn it (as, bs) = case it of
S2a a -> (a:as, bs)
S2b b -> (as, b:bs)
partitionS3 :: [S3 a b c] -> ([a], [b], [c])
partitionS3 = foldr fn ([], [], [])
where
fn it (as, bs, cs) = case it of
S3a a -> (a:as, bs, cs)
S3b b -> (as, b:bs, cs)
S3c c -> (as, bs, c:cs)
partitionS4 :: [S4 a b c d] -> ([a], [b], [c], [d])
partitionS4 = foldr fn ([], [], [], [])
where
fn it (as, bs, cs, ds) = case it of
S4a a -> (a:as, bs, cs, ds)
S4b b -> (as, b:bs, cs, ds)
S4c c -> (as, bs, c:cs, ds)
S4d d -> (as, bs, cs, d:ds)
partitionS5 :: [S5 a b c d e] -> ([a], [b], [c], [d], [e])
partitionS5 = foldr fn ([], [], [], [], [])
where
fn it (as, bs, cs, ds, es) = case it of
S5a a -> (a:as, bs, cs, ds, es)
S5b b -> (as, b:bs, cs, ds, es)
S5c c -> (as, bs, c:cs, ds, es)
S5d d -> (as, bs, cs, d:ds, es)
S5e e -> (as, bs, cs, ds, e:es)
partitionS6 :: [S6 a b c d e f] -> ([a], [b], [c], [d], [e], [f])
partitionS6 = foldr fn ([], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs) = case it of
S6a a -> (a:as, bs, cs, ds, es, fs)
S6b b -> (as, b:bs, cs, ds, es, fs)
S6c c -> (as, bs, c:cs, ds, es, fs)
S6d d -> (as, bs, cs, d:ds, es, fs)
S6e e -> (as, bs, cs, ds, e:es, fs)
S6f f -> (as, bs, cs, ds, es, f:fs)
partitionS7 :: [S7 a b c d e f g] -> ([a], [b], [c], [d], [e], [f], [g])
partitionS7 = foldr fn ([], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs) = case it of
S7a a -> (a:as, bs, cs, ds, es, fs, gs)
S7b b -> (as, b:bs, cs, ds, es, fs, gs)
S7c c -> (as, bs, c:cs, ds, es, fs, gs)
S7d d -> (as, bs, cs, d:ds, es, fs, gs)
S7e e -> (as, bs, cs, ds, e:es, fs, gs)
S7f f -> (as, bs, cs, ds, es, f:fs, gs)
S7g g -> (as, bs, cs, ds, es, fs, g:gs)
partitionS8 :: [S8 a b c d e f g h] -> ([a], [b], [c], [d], [e], [f], [g], [h])
partitionS8 = foldr fn ([], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs) = case it of
S8a a -> (a:as, bs, cs, ds, es, fs, gs, hs)
S8b b -> (as, b:bs, cs, ds, es, fs, gs, hs)
S8c c -> (as, bs, c:cs, ds, es, fs, gs, hs)
S8d d -> (as, bs, cs, d:ds, es, fs, gs, hs)
S8e e -> (as, bs, cs, ds, e:es, fs, gs, hs)
S8f f -> (as, bs, cs, ds, es, f:fs, gs, hs)
S8g g -> (as, bs, cs, ds, es, fs, g:gs, hs)
S8h h -> (as, bs, cs, ds, es, fs, gs, h:hs)
partitionS9 :: [S9 a b c d e f g h i] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i])
partitionS9 = foldr fn ([], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is) = case it of
S9a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is)
S9b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is)
S9c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is)
S9d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is)
S9e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is)
S9f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is)
S9g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is)
S9h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is)
S9i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is)
partitionS10 :: [S10 a b c d e f g h i j] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j])
partitionS10 = foldr fn ([], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js) = case it of
S10a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js)
S10b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js)
S10c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js)
S10d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js)
S10e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js)
S10f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js)
S10g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js)
S10h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js)
S10i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js)
S10j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js)
partitionS11 :: [S11 a b c d e f g h i j k] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k])
partitionS11 = foldr fn ([], [], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks) = case it of
S11a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks)
S11b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks)
S11c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks)
S11d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks)
S11e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks)
S11f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks)
S11g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks)
S11h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks)
S11i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks)
S11j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks)
S11k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks)
partitionS12 :: [S12 a b c d e f g h i j k l] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k], [l])
partitionS12 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls) = case it of
S12a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls)
S12b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls)
S12c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls)
S12d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls)
S12e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls)
S12f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls)
S12g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls)
S12h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls)
S12i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls)
S12j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls)
S12k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls)
S12l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls)
partitionS13 :: [S13 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], [m])
partitionS13 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms) = case it of
S13a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
S13b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
S13c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
S13d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms)
S13e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms)
S13f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms)
S13g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms)
S13h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms)
S13i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms)
S13j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms)
S13k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms)
S13l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms)
S13m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms)
partitionS14 :: [S14 a b c d e f g h i j k l m n] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k], [l], [m], [n])
partitionS14 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns) = case it of
S14a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
S14b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
S14c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
S14d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
S14e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms, ns)
S14f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms, ns)
S14g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms, ns)
S14h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms, ns)
S14i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms, ns)
S14j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms, ns)
S14k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms, ns)
S14l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms, ns)
S14m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms, ns)
S14n n -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, n:ns)
partitionS15 :: [S15 a b c d e f g h i j k l m n o] -> ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k], [l], [m], [n], [o])
partitionS15 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [], [], [])
where
fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os) = case it of
S15a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms, ns, os)
S15g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms, ns, os)
S15h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms, ns, os)
S15i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms, ns, os)
S15j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms, ns, os)
S15k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms, ns, os)
S15l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms, ns, os)
S15m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms, ns, os)
S15n n -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, n:ns, os)
S15o o -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, o:os)
caseS0 :: S0 -> z
caseS0 = undefined
caseS1 :: (a -> z) -> S1 a -> z
caseS1 fa s1 = case s1 of
S1a a -> fa a
caseS2 :: (a -> z) -> (b -> z) -> S2 a b -> z
caseS2 fa fb s2 = case s2 of
S2a a -> fa a
S2b b -> fb b
caseS3 :: (a -> z) -> (b -> z) -> (c -> z) -> S3 a b c -> z
caseS3 fa fb fc s3 = case s3 of
S3a a -> fa a
S3b b -> fb b
S3c c -> fc c
caseS4 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> S4 a b c d -> z
caseS4 fa fb fc fd s4 = case s4 of
S4a a -> fa a
S4b b -> fb b
S4c c -> fc c
S4d d -> fd d
caseS5 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> S5 a b c d e -> z
caseS5 fa fb fc fd fe s5 = case s5 of
S5a a -> fa a
S5b b -> fb b
S5c c -> fc c
S5d d -> fd d
S5e e -> fe e
caseS6 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> S6 a b c d e f -> z
caseS6 fa fb fc fd fe ff s6 = case s6 of
S6a a -> fa a
S6b b -> fb b
S6c c -> fc c
S6d d -> fd d
S6e e -> fe e
S6f f -> ff f
caseS7 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> S7 a b c d e f g -> z
caseS7 fa fb fc fd fe ff fg s7 = case s7 of
S7a a -> fa a
S7b b -> fb b
S7c c -> fc c
S7d d -> fd d
S7e e -> fe e
S7f f -> ff f
S7g g -> fg g
caseS8 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> S8 a b c d e f g h -> z
caseS8 fa fb fc fd fe ff fg fh s8 = case s8 of
S8a a -> fa a
S8b b -> fb b
S8c c -> fc c
S8d d -> fd d
S8e e -> fe e
S8f f -> ff f
S8g g -> fg g
S8h h -> fh h
caseS9 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> S9 a b c d e f g h i -> z
caseS9 fa fb fc fd fe ff fg fh fi s9 = case s9 of
S9a a -> fa a
S9b b -> fb b
S9c c -> fc c
S9d d -> fd d
S9e e -> fe e
S9f f -> ff f
S9g g -> fg g
S9h h -> fh h
S9i i -> fi i
caseS10 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> S10 a b c d e f g h i j -> z
caseS10 fa fb fc fd fe ff fg fh fi fj s10 = case s10 of
S10a a -> fa a
S10b b -> fb b
S10c c -> fc c
S10d d -> fd d
S10e e -> fe e
S10f f -> ff f
S10g g -> fg g
S10h h -> fh h
S10i i -> fi i
S10j j -> fj j
caseS11 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> S11 a b c d e f g h i j k -> z
caseS11 fa fb fc fd fe ff fg fh fi fj fk s11 = case s11 of
S11a a -> fa a
S11b b -> fb b
S11c c -> fc c
S11d d -> fd d
S11e e -> fe e
S11f f -> ff f
S11g g -> fg g
S11h h -> fh h
S11i i -> fi i
S11j j -> fj j
S11k k -> fk k
caseS12 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) -> S12 a b c d e f g h i j k l -> z
caseS12 fa fb fc fd fe ff fg fh fi fj fk fl s12 = case s12 of
S12a a -> fa a
S12b b -> fb b
S12c c -> fc c
S12d d -> fd d
S12e e -> fe e
S12f f -> ff f
S12g g -> fg g
S12h h -> fh h
S12i i -> fi i
S12j j -> fj j
S12k k -> fk k
S12l l -> fl l
caseS13 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) -> (m -> z) -> S13 a b c d e f g h i j k l m -> z
caseS13 fa fb fc fd fe ff fg fh fi fj fk fl fm s13 = case s13 of
S13a a -> fa a
S13b b -> fb b
S13c c -> fc c
S13d d -> fd d
S13e e -> fe e
S13f f -> ff f
S13g g -> fg g
S13h h -> fh h
S13i i -> fi i
S13j j -> fj j
S13k k -> fk k
S13l l -> fl l
S13m m -> fm m
caseS14 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) -> (m -> z) -> (n -> z) -> S14 a b c d e f g h i j k l m n -> z
caseS14 fa fb fc fd fe ff fg fh fi fj fk fl fm fn s14 = case s14 of
S14a a -> fa a
S14b b -> fb b
S14c c -> fc c
S14d d -> fd d
S14e e -> fe e
S14f f -> ff f
S14g g -> fg g
S14h h -> fh h
S14i i -> fi i
S14j j -> fj j
S14k k -> fk k
S14l l -> fl l
S14m m -> fm m
S14n n -> fn n
caseS15 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) -> (m -> z) -> (n -> z) -> (o -> z) -> S15 a b c d e f g h i j k l m n o -> z
caseS15 fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo s15 = case s15 of
S15a a -> fa a
S15b b -> fb b
S15c c -> fc c
S15d d -> fd d
S15e e -> fe e
S15f f -> ff f
S15g g -> fg g
S15h h -> fh h
S15i i -> fi i
S15j j -> fj j
S15k k -> fk k
S15l l -> fl l
S15m m -> fm m
S15n n -> fn n
S15o o -> fo o
mapS0 :: S0 -> S0
mapS0 = id
mapS1 :: (a -> a1) -> S1 a -> S1 a1
mapS1 a = caseS1 (S1a . a)
mapS2 :: (a -> a1) -> (b -> b1) -> S2 a b -> S2 a1 b1
mapS2 a b = caseS2 (S2a . a) (S2b . b)
mapS3 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> S3 a b c -> S3 a1 b1 c1
mapS3 a b c = caseS3 (S3a . a) (S3b . b) (S3c . c)
mapS4 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> S4 a b c d -> S4 a1 b1 c1 d1
mapS4 a b c d = caseS4 (S4a . a) (S4b . b) (S4c . c) (S4d . d)
mapS5 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> S5 a b c d e -> S5 a1 b1 c1 d1 e1
mapS5 a b c d e = caseS5 (S5a . a) (S5b . b) (S5c . c) (S5d . d) (S5e . e)
mapS6 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> S6 a b c d e f -> S6 a1 b1 c1 d1 e1 f1
mapS6 a b c d e f = caseS6 (S6a . a) (S6b . b) (S6c . c) (S6d . d) (S6e . e) (S6f . f)
mapS7 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> S7 a b c d e f g -> S7 a1 b1 c1 d1 e1 f1 g1
mapS7 a b c d e f g = caseS7 (S7a . a) (S7b . b) (S7c . c) (S7d . d) (S7e . e) (S7f . f) (S7g . g)
mapS8 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> S8 a b c d e f g h -> S8 a1 b1 c1 d1 e1 f1 g1 h1
mapS8 a b c d e f g h = caseS8 (S8a . a) (S8b . b) (S8c . c) (S8d . d) (S8e . e) (S8f . f) (S8g . g) (S8h . h)
mapS9 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> S9 a b c d e f g h i -> S9 a1 b1 c1 d1 e1 f1 g1 h1 i1
mapS9 a b c d e f g h i = caseS9 (S9a . a) (S9b . b) (S9c . c) (S9d . d) (S9e . e) (S9f . f) (S9g . g) (S9h . h) (S9i . i)
mapS10 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> S10 a b c d e f g h i j -> S10 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
mapS10 a b c d e f g h i j = caseS10 (S10a . a) (S10b . b) (S10c . c) (S10d . d) (S10e . e) (S10f . f) (S10g . g) (S10h . h) (S10i . i) (S10j . j)
mapS11 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> S11 a b c d e f g h i j k -> S11 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1
mapS11 a b c d e f g h i j k = caseS11 (S11a . a) (S11b . b) (S11c . c) (S11d . d) (S11e . e) (S11f . f) (S11g . g) (S11h . h) (S11i . i) (S11j . j) (S11k . k)
mapS12 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l -> l1) -> S12 a b c d e f g h i j k l -> S12 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1
mapS12 a b c d e f g h i j k l = caseS12 (S12a . a) (S12b . b) (S12c . c) (S12d . d) (S12e . e) (S12f . f) (S12g . g) (S12h . h) (S12i . i) (S12j . j) (S12k . k) (S12l . l)
mapS13 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l -> l1) -> (m -> m1) -> S13 a b c d e f g h i j k l m -> S13 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1
mapS13 a b c d e f g h i j k l m = caseS13 (S13a . a) (S13b . b) (S13c . c) (S13d . d) (S13e . e) (S13f . f) (S13g . g) (S13h . h) (S13i . i) (S13j . j) (S13k . k) (S13l . l) (S13m . m)
mapS14 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l -> l1) -> (m -> m1) -> (n -> n1) -> S14 a b c d e f g h i j k l m n -> S14 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1
mapS14 a b c d e f g h i j k l m n = caseS14 (S14a . a) (S14b . b) (S14c . c) (S14d . d) (S14e . e) (S14f . f) (S14g . g) (S14h . h) (S14i . i) (S14j . j) (S14k . k) (S14l . l) (S14m . m) (S14n . n)
mapS15 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f -> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l -> l1) -> (m -> m1) -> (n -> n1) -> (o -> o1) -> S15 a b c d e f g h i j k l m n o -> S15 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1
mapS15 a b c d e f g h i j k l m n o = caseS15 (S15a . a) (S15b . b) (S15c . c) (S15d . d) (S15e . e) (S15f . f) (S15g . g) (S15h . h) (S15i . i) (S15j . j) (S15k . k) (S15l . l) (S15m . m) (S15n . n) (S15o . o)
mapS0f :: Functor ftr => S0 -> ftr S0
mapS0f = undefined
mapS1f :: Functor ftr =>
(a -> ftr a1) -> S1 a -> ftr (S1 a1)
mapS1f a = caseS1 (fmap S1a . a)
mapS2f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> S2 a b -> ftr (S2 a1 b1)
mapS2f a b = caseS2 (fmap S2a . a) (fmap S2b . b)
mapS3f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> S3 a b c -> ftr (S3 a1 b1 c1)
mapS3f a b c = caseS3 (fmap S3a . a) (fmap S3b . b) (fmap S3c . c)
mapS4f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> S4 a b c d -> ftr (S4 a1 b1 c1 d1)
mapS4f a b c d = caseS4 (fmap S4a . a) (fmap S4b . b) (fmap S4c . c) (fmap S4d . d)
mapS5f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> S5 a b c d e -> ftr (S5 a1 b1 c1 d1 e1)
mapS5f a b c d e = caseS5 (fmap S5a . a) (fmap S5b . b) (fmap S5c . c) (fmap S5d . d) (fmap S5e . e)
mapS6f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> S6 a b c d e f -> ftr (S6 a1 b1 c1 d1 e1 f1)
mapS6f a b c d e f = caseS6 (fmap S6a . a) (fmap S6b . b) (fmap S6c . c) (fmap S6d . d) (fmap S6e . e) (fmap S6f . f)
mapS7f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> S7 a b c d e f g -> ftr (S7 a1 b1 c1 d1 e1 f1 g1)
mapS7f a b c d e f g = caseS7 (fmap S7a . a) (fmap S7b . b) (fmap S7c . c) (fmap S7d . d) (fmap S7e . e) (fmap S7f . f) (fmap S7g . g)
mapS8f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> S8 a b c d e f g h -> ftr (S8 a1 b1 c1 d1 e1 f1 g1 h1)
mapS8f a b c d e f g h = caseS8 (fmap S8a . a) (fmap S8b . b) (fmap S8c . c) (fmap S8d . d) (fmap S8e . e) (fmap S8f . f) (fmap S8g . g) (fmap S8h . h)
mapS9f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> S9 a b c d e f g h i -> ftr (S9 a1 b1 c1 d1 e1 f1 g1 h1 i1)
mapS9f a b c d e f g h i = caseS9 (fmap S9a . a) (fmap S9b . b) (fmap S9c . c) (fmap S9d . d) (fmap S9e . e) (fmap S9f . f) (fmap S9g . g) (fmap S9h . h) (fmap S9i . i)
mapS10f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> S10 a b c d e f g h i j -> ftr (S10 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1)
mapS10f a b c d e f g h i j = caseS10 (fmap S10a . a) (fmap S10b . b) (fmap S10c . c) (fmap S10d . d) (fmap S10e . e) (fmap S10f . f) (fmap S10g . g) (fmap S10h . h) (fmap S10i . i) (fmap S10j . j)
mapS11f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> (k -> ftr k1) -> S11 a b c d e f g h i j k -> ftr (S11 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1)
mapS11f a b c d e f g h i j k = caseS11 (fmap S11a . a) (fmap S11b . b) (fmap S11c . c) (fmap S11d . d) (fmap S11e . e) (fmap S11f . f) (fmap S11g . g) (fmap S11h . h) (fmap S11i . i) (fmap S11j . j) (fmap S11k . k)
mapS12f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> S12 a b c d e f g h i j k l -> ftr (S12 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1)
mapS12f a b c d e f g h i j k l = caseS12 (fmap S12a . a) (fmap S12b . b) (fmap S12c . c) (fmap S12d . d) (fmap S12e . e) (fmap S12f . f) (fmap S12g . g) (fmap S12h . h) (fmap S12i . i) (fmap S12j . j) (fmap S12k . k) (fmap S12l . l)
mapS13f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> S13 a b c d e f g h i j k l m -> ftr (S13 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1)
mapS13f a b c d e f g h i j k l m = caseS13 (fmap S13a . a) (fmap S13b . b) (fmap S13c . c) (fmap S13d . d) (fmap S13e . e) (fmap S13f . f) (fmap S13g . g) (fmap S13h . h) (fmap S13i . i) (fmap S13j . j) (fmap S13k . k) (fmap S13l . l) (fmap S13m . m)
mapS14f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> (n -> ftr n1) -> S14 a b c d e f g h i j k l m n -> ftr (S14 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1)
mapS14f a b c d e f g h i j k l m n = caseS14 (fmap S14a . a) (fmap S14b . b) (fmap S14c . c) (fmap S14d . d) (fmap S14e . e) (fmap S14f . f) (fmap S14g . g) (fmap S14h . h) (fmap S14i . i) (fmap S14j . j) (fmap S14k . k) (fmap S14l . l) (fmap S14m . m) (fmap S14n . n)
mapS15f :: Functor ftr =>
(a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e -> ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) -> (j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> (n -> ftr n1) -> (o -> ftr o1) -> S15 a b c d e f g h i j k l m n o -> ftr (S15 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1)
mapS15f a b c d e f g h i j k l m n o = caseS15 (fmap S15a . a) (fmap S15b . b) (fmap S15c . c) (fmap S15d . d) (fmap S15e . e) (fmap S15f . f) (fmap S15g . g) (fmap S15h . h) (fmap S15i . i) (fmap S15j . j) (fmap S15k . k) (fmap S15l . l) (fmap S15m . m) (fmap S15n . n) (fmap S15o . o)