License | Public domain |
---|---|
Maintainer | Jafet <jafet.vixle@gmail.com> |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
Cadre is a powerful framework for the organization of heterogeneous units. A live-fire demonstration follows.
Cadre allows any unit to be addressed uniformly:
>>>car
(1, 2) 1 >>> car (1, 2, 3) 1 >>> car (1, 2, 3, 4) 1 >>>cdr
(1, 2) 2 >>> cdr (1, 2, 3) (2, 3) >>> cdr (1, 2, 3, 4) (2, 3, 4)
and also reassigned uniformly:
>>>setCar
(+ 1) (1, 2) (2, 2) >>>setCdr
(subtract 1) (1, 2) (1, 1)
Of course, these basic functions can be used to carry out combined operations:
>>>caddr
(1, 2, 3, 4) 3 >>> caddr (1, 2, (3, 4)) 3 >>> caddr (1, (2, 3, 4)) 3 >>>setCaddr
(+ 1) (1, 2, 3, (4, 5)) (1, 2, 4, (4, 5)) >>>cdaar
.cdddr
$ (1, (2, 3, ((4, 5), 6), 7)) 5
Observe the simplicity and scalability of our approach. Cadre can use any type of car, opening up more logistical possibilities:
>>>cdddddr
[1 .. 10] [6, 7, 8, 9, 10] >>>setCddr
reverse (0, [1 .. 4]) (0, [1, 4, 3, 2])
From time to time you may find dissent among your ranks. Suppose that your lieutenant insists on
capture :: IO (X, Y, (Z, Z))
but your right-hand-man demands compliance with
dispose :: (X, (Y, [Z])) -> IO ()
Cadre helps them look past their differences and find solidarity:
capture >>=repair4
<&>
dispose
repair
is straightforward, even in the field.
In fact, its constituent steps are clear from its name:
repair4
=reap4
<&>pare4
>>> reap4 (1, 2, 3, 4) (1, (2, (3, 4))) >>> pare4 (1, (2, (3, 4))) :: (Int, Int, Int, Int) (1, 2, 3, 4) >>> pare4 (1, (2, (3, 4))) :: (Int, [Int]) (1, [2, 3, 4])
By understanding the details of repair
, we gain more flexibility in field operations:
>>> setCddr
(uncurry (++)) ("a", "b", "c", "d")
-- not permitted due to negative assessment of typing protocol
>>> pare3 . setCddr (uncurry (++)) . reap4 $ ("a", "b", "c", "d") :: (String, String, String)
("a", "b", "cd")
This concludes the live demonstration.
- (<&>) :: (a -> b) -> (b -> c) -> a -> c
- class Cadre a car cdr | a -> car cdr where
- cadre :: a -> (car, cdr)
- car :: Cadre a c b => a -> c
- cdr :: Cadre a a1 c => a -> c
- caar :: (Cadre a b b2, Cadre b c b1) => a -> c
- cadr :: (Cadre a a1 b, Cadre b c b1) => a -> c
- cdar :: (Cadre a b b1, Cadre b a1 c) => a -> c
- cddr :: (Cadre a a2 b, Cadre b a1 c) => a -> c
- caaar :: (Cadre b2 b b3, Cadre a b2 b4, Cadre b c b1) => a -> c
- caadr :: (Cadre b2 b b3, Cadre a a1 b2, Cadre b c b1) => a -> c
- cadar :: (Cadre b2 a1 b, Cadre a b2 b3, Cadre b c b1) => a -> c
- caddr :: (Cadre b2 a1 b, Cadre a a2 b2, Cadre b c b1) => a -> c
- cdaar :: (Cadre b1 b b2, Cadre a b1 b3, Cadre b a1 c) => a -> c
- cdadr :: (Cadre b1 b b2, Cadre a a2 b1, Cadre b a1 c) => a -> c
- cddar :: (Cadre b1 a2 b, Cadre a b1 b2, Cadre b a1 c) => a -> c
- cdddr :: (Cadre b1 a2 b, Cadre a a3 b1, Cadre b a1 c) => a -> c
- caaaar :: (Cadre b4 b b5, Cadre b1 c b2, Cadre a b4 b6, Cadre b b1 b3) => a -> c
- caaadr :: (Cadre b4 b b5, Cadre b1 c b2, Cadre a a1 b4, Cadre b b1 b3) => a -> c
- caadar :: (Cadre b4 a1 b, Cadre b1 c b2, Cadre a b4 b5, Cadre b b1 b3) => a -> c
- caaddr :: (Cadre b4 a1 b, Cadre b1 c b2, Cadre a a2 b4, Cadre b b1 b3) => a -> c
- cadaar :: (Cadre b3 b b4, Cadre b1 c b2, Cadre a b3 b5, Cadre b a1 b1) => a -> c
- cadadr :: (Cadre b3 b b4, Cadre b1 c b2, Cadre a a2 b3, Cadre b a1 b1) => a -> c
- caddar :: (Cadre b3 a2 b, Cadre b1 c b2, Cadre a b3 b4, Cadre b a1 b1) => a -> c
- cadddr :: (Cadre b3 a2 b, Cadre b1 c b2, Cadre a a3 b3, Cadre b a1 b1) => a -> c
- cdaaar :: (Cadre b3 b b4, Cadre b1 a1 c, Cadre a b3 b5, Cadre b b1 b2) => a -> c
- cdaadr :: (Cadre b3 b b4, Cadre b1 a1 c, Cadre a a2 b3, Cadre b b1 b2) => a -> c
- cdadar :: (Cadre b3 a2 b, Cadre b1 a1 c, Cadre a b3 b4, Cadre b b1 b2) => a -> c
- cdaddr :: (Cadre b3 a2 b, Cadre b1 a1 c, Cadre a a3 b3, Cadre b b1 b2) => a -> c
- cddaar :: (Cadre b2 b b3, Cadre b1 a1 c, Cadre a b2 b4, Cadre b a2 b1) => a -> c
- cddadr :: (Cadre b2 b b3, Cadre b1 a1 c, Cadre a a3 b2, Cadre b a2 b1) => a -> c
- cdddar :: (Cadre b2 a3 b, Cadre b1 a1 c, Cadre a b2 b3, Cadre b a2 b1) => a -> c
- cddddr :: (Cadre b2 a3 b, Cadre b1 a1 c, Cadre a a4 b2, Cadre b a2 b1) => a -> c
- caddddr :: (Cadre b4 a3 b2, Cadre b3 a1 b, Cadre b2 a2 b3, Cadre a a4 b4, Cadre b c b1) => a -> c
- cdddddr :: (Cadre b3 a4 b1, Cadre b2 a2 b, Cadre b1 a3 b2, Cadre a a5 b3, Cadre b a1 c) => a -> c
- cadddddr :: (Cadre b5 a4 b3, Cadre b4 a2 b, Cadre b3 a3 b4, Cadre b1 c b2, Cadre a a5 b5, Cadre b a1 b1) => a -> c
- cddddddr :: (Cadre b4 a5 b2, Cadre b3 a3 b, Cadre b2 a4 b3, Cadre b1 a1 c, Cadre a a6 b4, Cadre b a2 b1) => a -> c
- caddddddr :: (Cadre b6 a5 b4, Cadre b5 a3 b, Cadre b4 a4 b5, Cadre b3 a1 b1, Cadre b1 c b2, Cadre a a6 b6, Cadre b a2 b3) => a -> c
- cdddddddr :: (Cadre b5 a6 b3, Cadre b4 a4 b, Cadre b3 a5 b4, Cadre b2 a2 b1, Cadre b1 a1 c, Cadre a a7 b5, Cadre b a3 b2) => a -> c
- cadddddddr :: (Cadre b7 a6 b5, Cadre b6 a4 b, Cadre b5 a5 b6, Cadre b4 a2 b1, Cadre b2 c b3, Cadre b1 a1 b2, Cadre a a7 b7, Cadre b a3 b4) => a -> c
- cddddddddr :: (Cadre b6 a7 b4, Cadre b5 a5 b, Cadre b4 a6 b5, Cadre b3 a3 b1, Cadre b2 a1 c, Cadre b1 a2 b2, Cadre a a8 b6, Cadre b a4 b3) => a -> c
- caddddddddr :: (Cadre b8 a7 b6, Cadre b7 a5 b2, Cadre b6 a6 b7, Cadre b5 a3 b3, Cadre b4 a1 b, Cadre b3 a2 b4, Cadre b2 a4 b5, Cadre a a8 b8, Cadre b c b1) => a -> c
- cdddddddddr :: (Cadre b7 a8 b5, Cadre b6 a6 b1, Cadre b5 a7 b6, Cadre b4 a4 b2, Cadre b3 a2 b, Cadre b2 a3 b3, Cadre b1 a5 b4, Cadre a a9 b7, Cadre b a1 c) => a -> c
- cadddddddddr :: (Cadre b9 a8 b7, Cadre b8 a6 b3, Cadre b7 a7 b8, Cadre b6 a4 b4, Cadre b5 a2 b, Cadre b4 a3 b5, Cadre b3 a5 b6, Cadre b1 c b2, Cadre a a9 b9, Cadre b a1 b1) => a -> c
- cddddddddddr :: (Cadre b8 a9 b6, Cadre b7 a7 b2, Cadre b6 a8 b7, Cadre b5 a5 b3, Cadre b4 a3 b, Cadre b3 a4 b4, Cadre b2 a6 b5, Cadre b1 a1 c, Cadre a a10 b8, Cadre b a2 b1) => a -> c
- class (Cadre a car cdr, Cadre a' car' cdr') => CadreAssign a car cdr a' car' cdr' | a car' cdr' -> a' where
- setCadre :: (car -> car') -> (cdr -> cdr') -> a -> a'
- setCar :: CadreAssign a car cdr' a' car' cdr' => (car -> car') -> a -> a'
- setCdr :: CadreAssign a car' cdr a' car' cdr' => (cdr -> cdr') -> a -> a'
- setCaar :: (CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a1 -> a'1
- setCadr :: (CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a1 -> a'1
- setCdar :: (CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a1 -> a'1
- setCddr :: (CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a1 -> a'1
- setCaaar :: (CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2
- setCaadr :: (CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2
- setCadar :: (CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2
- setCaddr :: (CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2
- setCdaar :: (CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2
- setCdadr :: (CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2
- setCddar :: (CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2
- setCdddr :: (CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2
- setCaaaar :: (CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCaaadr :: (CadreAssign a3 car'1 a2 a'3 car'1 a'2, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCaadar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCaaddr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCadaar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCadadr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCaddar :: (CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCadddr :: (CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3
- setCdaaar :: (CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCdaadr :: (CadreAssign a3 car'1 a2 a'3 car'1 a'2, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCdadar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCdaddr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCddaar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCddadr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCdddar :: (CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCddddr :: (CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3
- setCaddddr :: (CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a4 -> a'4
- setCdddddr :: (CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a4 -> a'4
- setCadddddr :: (CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a5 -> a'5
- setCddddddr :: (CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a5 -> a'5
- setCaddddddr :: (CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a6 -> a'6
- setCdddddddr :: (CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a6 -> a'6
- setCadddddddr :: (CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a7 -> a'7
- setCddddddddr :: (CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a7 -> a'7
- setCaddddddddr :: (CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a8 -> a'8
- setCdddddddddr :: (CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a8 -> a'8
- setCadddddddddr :: (CadreAssign a9 car'9 a8 a'9 car'9 a'8, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a9 -> a'9
- setCddddddddddr :: (CadreAssign a9 car'9 a8 a'9 car'9 a'8, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a9 -> a'9
- class PearShaped2 a a1 a2 | a -> a1 a2 where
- repair2 :: (PearShaped2 a a1 a2, PearShaped2 c a1 a2) => a -> c
- class PearShaped3 a a1 a2 a3 | a -> a1 a2 a3 where
- repair3 :: (PearShaped3 a a1 a2 a3, PearShaped3 c a1 a2 a3) => a -> c
- class PearShaped4 a a1 a2 a3 a4 | a -> a1 a2 a3 a4 where
- repair4 :: (PearShaped4 a a1 a2 a3 a4, PearShaped4 c a1 a2 a3 a4) => a -> c
- class PearShaped5 a a1 a2 a3 a4 a5 | a -> a1 a2 a3 a4 a5 where
- repair5 :: (PearShaped5 a a1 a2 a3 a4 a5, PearShaped5 c a1 a2 a3 a4 a5) => a -> c
- class PearShaped6 a a1 a2 a3 a4 a5 a6 | a -> a1 a2 a3 a4 a5 a6 where
- repair6 :: (PearShaped6 a a1 a2 a3 a4 a5 a6, PearShaped6 c a1 a2 a3 a4 a5 a6) => a -> c
- class PearShaped7 a a1 a2 a3 a4 a5 a6 a7 | a -> a1 a2 a3 a4 a5 a6 a7 where
- repair7 :: (PearShaped7 a a1 a2 a3 a4 a5 a6 a7, PearShaped7 c a1 a2 a3 a4 a5 a6 a7) => a -> c
- class PearShaped8 a a1 a2 a3 a4 a5 a6 a7 a8 | a -> a1 a2 a3 a4 a5 a6 a7 a8 where
- repair8 :: (PearShaped8 a a1 a2 a3 a4 a5 a6 a7 a8, PearShaped8 c a1 a2 a3 a4 a5 a6 a7 a8) => a -> c
- class PearShaped9 a a1 a2 a3 a4 a5 a6 a7 a8 a9 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 where
- repair9 :: (PearShaped9 a a1 a2 a3 a4 a5 a6 a7 a8 a9, PearShaped9 c a1 a2 a3 a4 a5 a6 a7 a8 a9) => a -> c
- class PearShaped10 a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 where
- repair10 :: (PearShaped10 a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10, PearShaped10 c a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) => a -> c
Documentation
(<&>) :: (a -> b) -> (b -> c) -> a -> c infixl 9 Source
(<&>) = flip (.)
.
Hide this if you are importing <&>
from Control.Lens.
class Cadre a car cdr | a -> car cdr where Source
Cadre [a] a [a] | |
Cadre (a1, a2) a1 a2 | |
Cadre (a1, a2, a3) a1 (a2, a3) | |
Cadre (a1, a2, a3, a4) a1 (a2, a3, a4) | |
Cadre (a1, a2, a3, a4, a5) a1 (a2, a3, a4, a5) | |
Cadre (a1, a2, a3, a4, a5, a6) a1 (a2, a3, a4, a5, a6) | |
Cadre (a1, a2, a3, a4, a5, a6, a7) a1 (a2, a3, a4, a5, a6, a7) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8) a1 (a2, a3, a4, a5, a6, a7, a8) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9) a1 (a2, a3, a4, a5, a6, a7, a8, a9) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) | |
Cadre (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) |
caddddr :: (Cadre b4 a3 b2, Cadre b3 a1 b, Cadre b2 a2 b3, Cadre a a4 b4, Cadre b c b1) => a -> c Source
cdddddr :: (Cadre b3 a4 b1, Cadre b2 a2 b, Cadre b1 a3 b2, Cadre a a5 b3, Cadre b a1 c) => a -> c Source
cadddddr :: (Cadre b5 a4 b3, Cadre b4 a2 b, Cadre b3 a3 b4, Cadre b1 c b2, Cadre a a5 b5, Cadre b a1 b1) => a -> c Source
cddddddr :: (Cadre b4 a5 b2, Cadre b3 a3 b, Cadre b2 a4 b3, Cadre b1 a1 c, Cadre a a6 b4, Cadre b a2 b1) => a -> c Source
caddddddr :: (Cadre b6 a5 b4, Cadre b5 a3 b, Cadre b4 a4 b5, Cadre b3 a1 b1, Cadre b1 c b2, Cadre a a6 b6, Cadre b a2 b3) => a -> c Source
cdddddddr :: (Cadre b5 a6 b3, Cadre b4 a4 b, Cadre b3 a5 b4, Cadre b2 a2 b1, Cadre b1 a1 c, Cadre a a7 b5, Cadre b a3 b2) => a -> c Source
cadddddddr :: (Cadre b7 a6 b5, Cadre b6 a4 b, Cadre b5 a5 b6, Cadre b4 a2 b1, Cadre b2 c b3, Cadre b1 a1 b2, Cadre a a7 b7, Cadre b a3 b4) => a -> c Source
cddddddddr :: (Cadre b6 a7 b4, Cadre b5 a5 b, Cadre b4 a6 b5, Cadre b3 a3 b1, Cadre b2 a1 c, Cadre b1 a2 b2, Cadre a a8 b6, Cadre b a4 b3) => a -> c Source
caddddddddr :: (Cadre b8 a7 b6, Cadre b7 a5 b2, Cadre b6 a6 b7, Cadre b5 a3 b3, Cadre b4 a1 b, Cadre b3 a2 b4, Cadre b2 a4 b5, Cadre a a8 b8, Cadre b c b1) => a -> c Source
cdddddddddr :: (Cadre b7 a8 b5, Cadre b6 a6 b1, Cadre b5 a7 b6, Cadre b4 a4 b2, Cadre b3 a2 b, Cadre b2 a3 b3, Cadre b1 a5 b4, Cadre a a9 b7, Cadre b a1 c) => a -> c Source
cadddddddddr :: (Cadre b9 a8 b7, Cadre b8 a6 b3, Cadre b7 a7 b8, Cadre b6 a4 b4, Cadre b5 a2 b, Cadre b4 a3 b5, Cadre b3 a5 b6, Cadre b1 c b2, Cadre a a9 b9, Cadre b a1 b1) => a -> c Source
cddddddddddr :: (Cadre b8 a9 b6, Cadre b7 a7 b2, Cadre b6 a8 b7, Cadre b5 a5 b3, Cadre b4 a3 b, Cadre b3 a4 b4, Cadre b2 a6 b5, Cadre b1 a1 c, Cadre a a10 b8, Cadre b a2 b1) => a -> c Source
class (Cadre a car cdr, Cadre a' car' cdr') => CadreAssign a car cdr a' car' cdr' | a car' cdr' -> a' where Source
CadreAssign [a] a [a] [a] a [a] | |
CadreAssign (a1, a2) a1 a2 (b1, b2) b1 b2 | |
CadreAssign (a1, a2, a3) a1 (a2, a3) (b1, b2, b3) b1 (b2, b3) | |
CadreAssign (a1, a2, a3, a4) a1 (a2, a3, a4) (b1, b2, b3, b4) b1 (b2, b3, b4) | |
CadreAssign (a1, a2, a3, a4, a5) a1 (a2, a3, a4, a5) (b1, b2, b3, b4, b5) b1 (b2, b3, b4, b5) | |
CadreAssign (a1, a2, a3, a4, a5, a6) a1 (a2, a3, a4, a5, a6) (b1, b2, b3, b4, b5, b6) b1 (b2, b3, b4, b5, b6) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7) a1 (a2, a3, a4, a5, a6, a7) (b1, b2, b3, b4, b5, b6, b7) b1 (b2, b3, b4, b5, b6, b7) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8) a1 (a2, a3, a4, a5, a6, a7, a8) (b1, b2, b3, b4, b5, b6, b7, b8) b1 (b2, b3, b4, b5, b6, b7, b8) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9) a1 (a2, a3, a4, a5, a6, a7, a8, a9) (b1, b2, b3, b4, b5, b6, b7, b8, b9) b1 (b2, b3, b4, b5, b6, b7, b8, b9) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15) | |
CadreAssign (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) a1 (a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16) b1 (b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16) |
setCar :: CadreAssign a car cdr' a' car' cdr' => (car -> car') -> a -> a' Source
setCdr :: CadreAssign a car' cdr a' car' cdr' => (cdr -> cdr') -> a -> a' Source
setCaar :: (CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a1 -> a'1 Source
setCadr :: (CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a1 -> a'1 Source
setCdar :: (CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a1 -> a'1 Source
setCddr :: (CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a1 -> a'1 Source
setCaaar :: (CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2 Source
setCaadr :: (CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2 Source
setCadar :: (CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2 Source
setCaddr :: (CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a2 -> a'2 Source
setCdaar :: (CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2 Source
setCdadr :: (CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2 Source
setCddar :: (CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2 Source
setCdddr :: (CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a2 -> a'2 Source
setCaaaar :: (CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCaaadr :: (CadreAssign a3 car'1 a2 a'3 car'1 a'2, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCaadar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCaaddr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCadaar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCadadr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCaddar :: (CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCadddr :: (CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a3 -> a'3 Source
setCdaaar :: (CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCdaadr :: (CadreAssign a3 car'1 a2 a'3 car'1 a'2, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCdadar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCdaddr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCddaar :: (CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCddadr :: (CadreAssign a3 car'2 a2 a'3 car'2 a'2, CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCdddar :: (CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCddddr :: (CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a3 -> a'3 Source
setCaddddr :: (CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a4 -> a'4 Source
setCdddddr :: (CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a4 -> a'4 Source
setCadddddr :: (CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a5 -> a'5 Source
setCddddddr :: (CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a5 -> a'5 Source
setCaddddddr :: (CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a6 -> a'6 Source
setCdddddddr :: (CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a6 -> a'6 Source
setCadddddddr :: (CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a7 -> a'7 Source
setCddddddddr :: (CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a7 -> a'7 Source
setCaddddddddr :: (CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a8 -> a'8 Source
setCdddddddddr :: (CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a8 -> a'8 Source
setCadddddddddr :: (CadreAssign a9 car'9 a8 a'9 car'9 a'8, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car cdr' a' car' cdr') => (car -> car') -> a9 -> a'9 Source
setCddddddddddr :: (CadreAssign a9 car'9 a8 a'9 car'9 a'8, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a car' cdr a' car' cdr') => (cdr -> cdr') -> a9 -> a'9 Source
class PearShaped2 a a1 a2 | a -> a1 a2 where Source
Things that can be reshaped into cons pairs.
PearShaped2 [a] a a | |
PearShaped2 (a1, a2) a1 a2 |
repair2 :: (PearShaped2 a a1 a2, PearShaped2 c a1 a2) => a -> c Source
class PearShaped3 a a1 a2 a3 | a -> a1 a2 a3 where Source
PearShaped3 [a] a a a | |
PearShaped2 a a2 a3 => PearShaped3 (a1, a) a1 a2 a3 | |
PearShaped3 (a1, a2, a3) a1 a2 a3 |
repair3 :: (PearShaped3 a a1 a2 a3, PearShaped3 c a1 a2 a3) => a -> c Source
class PearShaped4 a a1 a2 a3 a4 | a -> a1 a2 a3 a4 where Source
PearShaped4 [a] a a a a | |
PearShaped3 a a2 a3 a4 => PearShaped4 (a1, a) a1 a2 a3 a4 | |
PearShaped2 a a3 a4 => PearShaped4 (a1, a2, a) a1 a2 a3 a4 | |
PearShaped4 (a1, a2, a3, a4) a1 a2 a3 a4 |
repair4 :: (PearShaped4 a a1 a2 a3 a4, PearShaped4 c a1 a2 a3 a4) => a -> c Source
class PearShaped5 a a1 a2 a3 a4 a5 | a -> a1 a2 a3 a4 a5 where Source
PearShaped5 [a] a a a a a | |
PearShaped4 a a2 a3 a4 a5 => PearShaped5 (a1, a) a1 a2 a3 a4 a5 | |
PearShaped3 a a3 a4 a5 => PearShaped5 (a1, a2, a) a1 a2 a3 a4 a5 | |
PearShaped2 a a4 a5 => PearShaped5 (a1, a2, a3, a) a1 a2 a3 a4 a5 | |
PearShaped5 (a1, a2, a3, a4, a5) a1 a2 a3 a4 a5 |
repair5 :: (PearShaped5 a a1 a2 a3 a4 a5, PearShaped5 c a1 a2 a3 a4 a5) => a -> c Source
class PearShaped6 a a1 a2 a3 a4 a5 a6 | a -> a1 a2 a3 a4 a5 a6 where Source
PearShaped6 [a] a a a a a a | |
PearShaped5 a a2 a3 a4 a5 a6 => PearShaped6 (a1, a) a1 a2 a3 a4 a5 a6 | |
PearShaped4 a a3 a4 a5 a6 => PearShaped6 (a1, a2, a) a1 a2 a3 a4 a5 a6 | |
PearShaped3 a a4 a5 a6 => PearShaped6 (a1, a2, a3, a) a1 a2 a3 a4 a5 a6 | |
PearShaped2 a a5 a6 => PearShaped6 (a1, a2, a3, a4, a) a1 a2 a3 a4 a5 a6 | |
PearShaped6 (a1, a2, a3, a4, a5, a6) a1 a2 a3 a4 a5 a6 |
repair6 :: (PearShaped6 a a1 a2 a3 a4 a5 a6, PearShaped6 c a1 a2 a3 a4 a5 a6) => a -> c Source
class PearShaped7 a a1 a2 a3 a4 a5 a6 a7 | a -> a1 a2 a3 a4 a5 a6 a7 where Source
PearShaped7 [a] a a a a a a a | |
PearShaped6 a a2 a3 a4 a5 a6 a7 => PearShaped7 (a1, a) a1 a2 a3 a4 a5 a6 a7 | |
PearShaped5 a a3 a4 a5 a6 a7 => PearShaped7 (a1, a2, a) a1 a2 a3 a4 a5 a6 a7 | |
PearShaped4 a a4 a5 a6 a7 => PearShaped7 (a1, a2, a3, a) a1 a2 a3 a4 a5 a6 a7 | |
PearShaped3 a a5 a6 a7 => PearShaped7 (a1, a2, a3, a4, a) a1 a2 a3 a4 a5 a6 a7 | |
PearShaped2 a a6 a7 => PearShaped7 (a1, a2, a3, a4, a5, a) a1 a2 a3 a4 a5 a6 a7 | |
PearShaped7 (a1, a2, a3, a4, a5, a6, a7) a1 a2 a3 a4 a5 a6 a7 |
repair7 :: (PearShaped7 a a1 a2 a3 a4 a5 a6 a7, PearShaped7 c a1 a2 a3 a4 a5 a6 a7) => a -> c Source
class PearShaped8 a a1 a2 a3 a4 a5 a6 a7 a8 | a -> a1 a2 a3 a4 a5 a6 a7 a8 where Source
reap8 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, a8))))))) Source
pare8 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, a8))))))) -> a Source
PearShaped8 [a] a a a a a a a a | |
PearShaped7 a a2 a3 a4 a5 a6 a7 a8 => PearShaped8 (a1, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped6 a a3 a4 a5 a6 a7 a8 => PearShaped8 (a1, a2, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped5 a a4 a5 a6 a7 a8 => PearShaped8 (a1, a2, a3, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped4 a a5 a6 a7 a8 => PearShaped8 (a1, a2, a3, a4, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped3 a a6 a7 a8 => PearShaped8 (a1, a2, a3, a4, a5, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped2 a a7 a8 => PearShaped8 (a1, a2, a3, a4, a5, a6, a) a1 a2 a3 a4 a5 a6 a7 a8 | |
PearShaped8 (a1, a2, a3, a4, a5, a6, a7, a8) a1 a2 a3 a4 a5 a6 a7 a8 |
repair8 :: (PearShaped8 a a1 a2 a3 a4 a5 a6 a7 a8, PearShaped8 c a1 a2 a3 a4 a5 a6 a7 a8) => a -> c Source
class PearShaped9 a a1 a2 a3 a4 a5 a6 a7 a8 a9 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 where Source
reap9 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, a9)))))))) Source
pare9 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, a9)))))))) -> a Source
PearShaped9 [a] a a a a a a a a a | |
PearShaped8 a a2 a3 a4 a5 a6 a7 a8 a9 => PearShaped9 (a1, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped7 a a3 a4 a5 a6 a7 a8 a9 => PearShaped9 (a1, a2, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped6 a a4 a5 a6 a7 a8 a9 => PearShaped9 (a1, a2, a3, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped5 a a5 a6 a7 a8 a9 => PearShaped9 (a1, a2, a3, a4, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped4 a a6 a7 a8 a9 => PearShaped9 (a1, a2, a3, a4, a5, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped3 a a7 a8 a9 => PearShaped9 (a1, a2, a3, a4, a5, a6, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped2 a a8 a9 => PearShaped9 (a1, a2, a3, a4, a5, a6, a7, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 | |
PearShaped9 (a1, a2, a3, a4, a5, a6, a7, a8, a9) a1 a2 a3 a4 a5 a6 a7 a8 a9 |
repair9 :: (PearShaped9 a a1 a2 a3 a4 a5 a6 a7 a8 a9, PearShaped9 c a1 a2 a3 a4 a5 a6 a7 a8 a9) => a -> c Source
class PearShaped10 a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 where Source
reap10 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, a10))))))))) Source
pare10 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, a10))))))))) -> a Source
PearShaped10 [a] a a a a a a a a a a | |
PearShaped9 a a2 a3 a4 a5 a6 a7 a8 a9 a10 => PearShaped10 (a1, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped8 a a3 a4 a5 a6 a7 a8 a9 a10 => PearShaped10 (a1, a2, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped7 a a4 a5 a6 a7 a8 a9 a10 => PearShaped10 (a1, a2, a3, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped6 a a5 a6 a7 a8 a9 a10 => PearShaped10 (a1, a2, a3, a4, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped5 a a6 a7 a8 a9 a10 => PearShaped10 (a1, a2, a3, a4, a5, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped4 a a7 a8 a9 a10 => PearShaped10 (a1, a2, a3, a4, a5, a6, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped3 a a8 a9 a10 => PearShaped10 (a1, a2, a3, a4, a5, a6, a7, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped2 a a9 a10 => PearShaped10 (a1, a2, a3, a4, a5, a6, a7, a8, a) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | |
PearShaped10 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 |
repair10 :: (PearShaped10 a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10, PearShaped10 c a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) => a -> c Source