module Acme.StringlyTyped
(
promote,
promote2,
promote3,
promote4,
promote5,
promote6,
promote7,
promote8,
promote9,
promote10,
promoteFst,
promoteSnd,
promote3rd,
promote4th,
promote5th,
promote6th,
promote7th,
promote8th,
promote9th,
promote10th,
promoteLast,
promote2Last,
promote3Last,
promote4Last,
promote5Last,
promote6Last,
promote7Last,
promote8Last,
promote9Last,
promote10Last
)
where
promote ::
(Read a, Show b) =>
(a -> b)
-> String -> String
promote =
promoteFst . promoteLast
promote2 ::
(Read a, Read b, Show c) =>
(a -> b -> c)
-> String -> String -> String
promote2 =
promoteFst . promoteSnd . promote2Last
promote3 ::
(Read a, Read b, Read c, Show d) =>
(a -> b -> c -> d)
-> String -> String -> String -> String
promote3 =
promoteFst . promoteSnd . promote3rd . promote3Last
promote4 ::
(Read a, Read b, Read c, Read d, Show e) =>
(a -> b -> c -> d -> e)
-> String -> String -> String -> String -> String
promote4 =
promoteFst . promoteSnd . promote3rd . promote4th . promote4Last
promote5 ::
(Read a, Read b, Read c, Read d, Read e, Show f) =>
(a -> b -> c -> d -> e -> f)
-> String -> String -> String -> String -> String -> String
promote5 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote5Last
promote6 ::
(Read a, Read b, Read c, Read d, Read e, Read f, Show g) =>
(a -> b -> c -> d -> e -> f -> g)
-> String -> String -> String -> String -> String -> String -> String
promote6 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote6th . promote6Last
promote7 ::
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Show h) =>
(a -> b -> c -> d -> e -> f -> g -> h)
-> String -> String -> String -> String -> String -> String -> String -> String
promote7 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote6th . promote7th . promote7Last
promote8 ::
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Show i) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i)
-> String -> String -> String -> String -> String -> String -> String -> String -> String
promote8 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote6th . promote7th . promote8th . promote8Last
promote9 ::
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Show j) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j)
-> String -> String -> String -> String -> String -> String -> String -> String -> String -> String
promote9 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote6th . promote7th . promote8th . promote9th . promote9Last
promote10 ::
(Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Show k) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k)
-> String -> String -> String -> String -> String -> String -> String -> String -> String -> String -> String
promote10 =
promoteFst . promoteSnd . promote3rd . promote4th . promote5th . promote6th . promote7th . promote8th . promote9th . promote10th . promote10Last
promoteFst ::
(Read a) =>
(a -> b)
-> String -> b
promoteFst f = fmap f read
promoteSnd ::
(Read b) =>
(a -> b -> c)
-> a -> String -> c
promoteSnd =
fmap promoteFst
promote3rd ::
(Read c) =>
(a -> b -> c -> d)
-> a -> b -> String -> d
promote3rd =
(fmap . fmap) promoteFst
promote4th ::
(Read d) =>
(a -> b -> c -> d -> e)
-> a -> b -> c -> String -> e
promote4th =
(fmap . fmap . fmap) promoteFst
promote5th ::
(Read e) =>
(a -> b -> c -> d -> e -> f)
-> a -> b -> c -> d -> String -> f
promote5th =
(fmap . fmap . fmap . fmap) promoteFst
promote6th ::
(Read f) =>
(a -> b -> c -> d -> e -> f -> g)
-> a -> b -> c -> d -> e -> String -> g
promote6th =
(fmap . fmap . fmap . fmap . fmap) promoteFst
promote7th ::
(Read g) =>
(a -> b -> c -> d -> e -> f -> g -> h)
-> a -> b -> c -> d -> e -> f -> String -> h
promote7th =
(fmap . fmap . fmap . fmap . fmap . fmap) promoteFst
promote8th ::
(Read h) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i)
-> a -> b -> c -> d -> e -> f -> g -> String -> i
promote8th =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteFst
promote9th ::
(Read i) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j)
-> a -> b -> c -> d -> e -> f -> g -> h -> String -> j
promote9th =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteFst
promote10th ::
(Read j) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k)
-> a -> b -> c -> d -> e -> f -> g -> h -> i -> String -> k
promote10th =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteFst
promoteLast ::
(Show b) =>
(a -> b)
-> a -> String
promoteLast f =
show . f
promote2Last ::
(Show c) =>
(a -> b -> c)
-> a -> b -> String
promote2Last =
fmap promoteLast
promote3Last ::
(Show d) =>
(a -> b -> c -> d)
-> a -> b -> c -> String
promote3Last =
(fmap . fmap) promoteLast
promote4Last ::
(Show e) =>
(a -> b -> c -> d -> e)
-> a -> b -> c -> d -> String
promote4Last =
(fmap . fmap . fmap) promoteLast
promote5Last ::
(Show f) =>
(a -> b -> c -> d -> e -> f)
-> a -> b -> c -> d -> e -> String
promote5Last =
(fmap . fmap . fmap . fmap) promoteLast
promote6Last ::
(Show g) =>
(a -> b -> c -> d -> e -> f -> g)
-> a -> b -> c -> d -> e -> f -> String
promote6Last =
(fmap . fmap . fmap . fmap . fmap) promoteLast
promote7Last ::
(Show h) =>
(a -> b -> c -> d -> e -> f -> g -> h)
-> a -> b -> c -> d -> e -> f -> g -> String
promote7Last =
(fmap . fmap . fmap . fmap . fmap . fmap) promoteLast
promote8Last ::
(Show i) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i)
-> a -> b -> c -> d -> e -> f -> g -> h -> String
promote8Last =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteLast
promote9Last ::
(Show j) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j)
-> a -> b -> c -> d -> e -> f -> g -> h -> i -> String
promote9Last =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteLast
promote10Last ::
(Show k) =>
(a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k)
-> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> String
promote10Last =
(fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap . fmap) promoteLast