acme-cadre-0.1: car, cdr and more

Stabilityexperimental
MaintainerJafet <jafet.vixle@gmail.com>
Safe HaskellSafe-Inferred

Acme.Cadre

Description

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.

Synopsis

Documentation

(<&>) :: (a -> b) -> (b -> c) -> a -> cSource

(<&>) = flip (.). Hide this if you are importing <&> from Control.Lens.

class Cadre a car cdr | a -> car cdr whereSource

Methods

cadre :: a -> (car, cdr)Source

Instances

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) 

car :: Cadre a c b => a -> cSource

cdr :: Cadre a a1 c => a -> cSource

caar :: (Cadre b c b1, Cadre a b b2) => a -> cSource

cadr :: (Cadre b c b1, Cadre a a1 b) => a -> cSource

cdar :: (Cadre b a1 c, Cadre a b b1) => a -> cSource

cddr :: (Cadre b a1 c, Cadre a a2 b) => a -> cSource

caaar :: (Cadre b c b1, Cadre b2 b b3, Cadre a b2 b4) => a -> cSource

caadr :: (Cadre b c b1, Cadre b2 b b3, Cadre a a1 b2) => a -> cSource

cadar :: (Cadre b c b1, Cadre b2 a1 b, Cadre a b2 b3) => a -> cSource

caddr :: (Cadre b c b1, Cadre b2 a1 b, Cadre a a2 b2) => a -> cSource

cdaar :: (Cadre b a1 c, Cadre b1 b b2, Cadre a b1 b3) => a -> cSource

cdadr :: (Cadre b a1 c, Cadre b1 b b2, Cadre a a2 b1) => a -> cSource

cddar :: (Cadre b a1 c, Cadre b1 a2 b, Cadre a b1 b2) => a -> cSource

cdddr :: (Cadre b a1 c, Cadre b1 a2 b, Cadre a a3 b1) => a -> cSource

caaaar :: (Cadre b1 c b2, Cadre b b1 b3, Cadre b4 b b5, Cadre a b4 b6) => a -> cSource

caaadr :: (Cadre b1 c b2, Cadre b b1 b3, Cadre b4 b b5, Cadre a a1 b4) => a -> cSource

caadar :: (Cadre b1 c b2, Cadre b b1 b3, Cadre b4 a1 b, Cadre a b4 b5) => a -> cSource

caaddr :: (Cadre b1 c b2, Cadre b b1 b3, Cadre b4 a1 b, Cadre a a2 b4) => a -> cSource

cadaar :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b3 b b4, Cadre a b3 b5) => a -> cSource

cadadr :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b3 b b4, Cadre a a2 b3) => a -> cSource

caddar :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b3 a2 b, Cadre a b3 b4) => a -> cSource

cadddr :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b3 a2 b, Cadre a a3 b3) => a -> cSource

cdaaar :: (Cadre b1 a1 c, Cadre b b1 b2, Cadre b3 b b4, Cadre a b3 b5) => a -> cSource

cdaadr :: (Cadre b1 a1 c, Cadre b b1 b2, Cadre b3 b b4, Cadre a a2 b3) => a -> cSource

cdadar :: (Cadre b1 a1 c, Cadre b b1 b2, Cadre b3 a2 b, Cadre a b3 b4) => a -> cSource

cdaddr :: (Cadre b1 a1 c, Cadre b b1 b2, Cadre b3 a2 b, Cadre a a3 b3) => a -> cSource

cddaar :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b2 b b3, Cadre a b2 b4) => a -> cSource

cddadr :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b2 b b3, Cadre a a3 b2) => a -> cSource

cdddar :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b2 a3 b, Cadre a b2 b3) => a -> cSource

cddddr :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b2 a3 b, Cadre a a4 b2) => a -> cSource

caddddr :: (Cadre b c b1, Cadre b3 a1 b, Cadre b2 a2 b3, Cadre b4 a3 b2, Cadre a a4 b4) => a -> cSource

cdddddr :: (Cadre b a1 c, Cadre b2 a2 b, Cadre b1 a3 b2, Cadre b3 a4 b1, Cadre a a5 b3) => a -> cSource

cadddddr :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b4 a2 b, Cadre b3 a3 b4, Cadre b5 a4 b3, Cadre a a5 b5) => a -> cSource

cddddddr :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b3 a3 b, Cadre b2 a4 b3, Cadre b4 a5 b2, Cadre a a6 b4) => a -> cSource

caddddddr :: (Cadre b1 c b2, Cadre b3 a1 b1, Cadre b a2 b3, Cadre b5 a3 b, Cadre b4 a4 b5, Cadre b6 a5 b4, Cadre a a6 b6) => a -> cSource

cdddddddr :: (Cadre b1 a1 c, Cadre b2 a2 b1, Cadre b a3 b2, Cadre b4 a4 b, Cadre b3 a5 b4, Cadre b5 a6 b3, Cadre a a7 b5) => a -> cSource

cadddddddr :: (Cadre b2 c b3, Cadre b1 a1 b2, Cadre b4 a2 b1, Cadre b a3 b4, Cadre b6 a4 b, Cadre b5 a5 b6, Cadre b7 a6 b5, Cadre a a7 b7) => a -> cSource

cddddddddr :: (Cadre b2 a1 c, Cadre b1 a2 b2, Cadre b3 a3 b1, Cadre b a4 b3, Cadre b5 a5 b, Cadre b4 a6 b5, Cadre b6 a7 b4, Cadre a a8 b6) => a -> cSource

caddddddddr :: (Cadre b c b1, Cadre b4 a1 b, Cadre b3 a2 b4, Cadre b5 a3 b3, Cadre b2 a4 b5, Cadre b7 a5 b2, Cadre b6 a6 b7, Cadre b8 a7 b6, Cadre a a8 b8) => a -> cSource

cdddddddddr :: (Cadre b a1 c, Cadre b3 a2 b, Cadre b2 a3 b3, Cadre b4 a4 b2, Cadre b1 a5 b4, Cadre b6 a6 b1, Cadre b5 a7 b6, Cadre b7 a8 b5, Cadre a a9 b7) => a -> cSource

cadddddddddr :: (Cadre b1 c b2, Cadre b a1 b1, Cadre b5 a2 b, Cadre b4 a3 b5, Cadre b6 a4 b4, Cadre b3 a5 b6, Cadre b8 a6 b3, Cadre b7 a7 b8, Cadre b9 a8 b7, Cadre a a9 b9) => a -> cSource

cddddddddddr :: (Cadre b1 a1 c, Cadre b a2 b1, Cadre b4 a3 b, Cadre b3 a4 b4, Cadre b5 a5 b3, Cadre b2 a6 b5, Cadre b7 a7 b2, Cadre b6 a8 b7, Cadre b8 a9 b6, Cadre a a10 b8) => a -> cSource

class (Cadre a car cdr, Cadre a' car' cdr') => CadreAssign a car cdr a' car' cdr' | a car' cdr' -> a' whereSource

Methods

setCadre :: (car -> car') -> (cdr -> cdr') -> a -> a'Source

Instances

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 a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1) => (car -> car') -> a1 -> a'1Source

setCadr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a') => (car -> car') -> a1 -> a'1Source

setCdar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1) => (cdr -> cdr') -> a1 -> a'1Source

setCddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a') => (cdr -> cdr') -> a1 -> a'1Source

setCaaar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2) => (car -> car') -> a2 -> a'2Source

setCaadr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1) => (car -> car') -> a2 -> a'2Source

setCadar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1) => (car -> car') -> a2 -> a'2Source

setCaddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1) => (car -> car') -> a2 -> a'2Source

setCdaar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2) => (cdr -> cdr') -> a2 -> a'2Source

setCdadr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1) => (cdr -> cdr') -> a2 -> a'2Source

setCddar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1) => (cdr -> cdr') -> a2 -> a'2Source

setCdddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1) => (cdr -> cdr') -> a2 -> a'2Source

setCaaaar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3) => (car -> car') -> a3 -> a'3Source

setCaaadr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a3 car'1 a2 a'3 car'1 a'2) => (car -> car') -> a3 -> a'3Source

setCaadar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2) => (car -> car') -> a3 -> a'3Source

setCaaddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a3 car'2 a2 a'3 car'2 a'2) => (car -> car') -> a3 -> a'3Source

setCadaar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2) => (car -> car') -> a3 -> a'3Source

setCadadr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a3 car'2 a2 a'3 car'2 a'2) => (car -> car') -> a3 -> a'3Source

setCaddar :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1) => (car -> car') -> a3 -> a'3Source

setCadddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2) => (car -> car') -> a3 -> a'3Source

setCdaaar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a3 a2 cdr'3 a'3 a'2 cdr'3) => (cdr -> cdr') -> a3 -> a'3Source

setCdaadr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 a1 cdr'2 a'2 a'1 cdr'2, CadreAssign a3 car'1 a2 a'3 car'1 a'2) => (cdr -> cdr') -> a3 -> a'3Source

setCdadar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2) => (cdr -> cdr') -> a3 -> a'3Source

setCdaddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 a cdr'1 a'1 a' cdr'1, CadreAssign a2 car'1 a1 a'2 car'1 a'1, CadreAssign a3 car'2 a2 a'3 car'2 a'2) => (cdr -> cdr') -> a3 -> a'3Source

setCddaar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a3 a2 cdr'2 a'3 a'2 cdr'2) => (cdr -> cdr') -> a3 -> a'3Source

setCddadr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 a1 cdr'1 a'2 a'1 cdr'1, CadreAssign a3 car'2 a2 a'3 car'2 a'2) => (cdr -> cdr') -> a3 -> a'3Source

setCdddar :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 a2 cdr'1 a'3 a'2 cdr'1) => (cdr -> cdr') -> a3 -> a'3Source

setCddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2) => (cdr -> cdr') -> a3 -> a'3Source

setCaddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3) => (car -> car') -> a4 -> a'4Source

setCdddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3) => (cdr -> cdr') -> a4 -> a'4Source

setCadddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4) => (car -> car') -> a5 -> a'5Source

setCddddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4) => (cdr -> cdr') -> a5 -> a'5Source

setCaddddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5) => (car -> car') -> a6 -> a'6Source

setCdddddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5) => (cdr -> cdr') -> a6 -> a'6Source

setCadddddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6) => (car -> car') -> a7 -> a'7Source

setCddddddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6) => (cdr -> cdr') -> a7 -> a'7Source

setCaddddddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a8 car'8 a7 a'8 car'8 a'7) => (car -> car') -> a8 -> a'8Source

setCdddddddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a8 car'8 a7 a'8 car'8 a'7) => (cdr -> cdr') -> a8 -> a'8Source

setCadddddddddr :: (CadreAssign a car cdr' a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a9 car'9 a8 a'9 car'9 a'8) => (car -> car') -> a9 -> a'9Source

setCddddddddddr :: (CadreAssign a car' cdr a' car' cdr', CadreAssign a1 car'1 a a'1 car'1 a', CadreAssign a2 car'2 a1 a'2 car'2 a'1, CadreAssign a3 car'3 a2 a'3 car'3 a'2, CadreAssign a4 car'4 a3 a'4 car'4 a'3, CadreAssign a5 car'5 a4 a'5 car'5 a'4, CadreAssign a6 car'6 a5 a'6 car'6 a'5, CadreAssign a7 car'7 a6 a'7 car'7 a'6, CadreAssign a8 car'8 a7 a'8 car'8 a'7, CadreAssign a9 car'9 a8 a'9 car'9 a'8) => (cdr -> cdr') -> a9 -> a'9Source

class PearShaped2 a a1 a2 | a -> a1 a2 whereSource

Things that can be reshaped into cons pairs.

Methods

reap2 :: a -> (a1, a2)Source

pare2 :: (a1, a2) -> aSource

Instances

PearShaped2 [a] a a 
PearShaped2 (a1, a2) a1 a2 

repair2 :: (PearShaped2 a a1 a2, PearShaped2 c a1 a2) => a -> cSource

class PearShaped3 a a1 a2 a3 | a -> a1 a2 a3 whereSource

Methods

reap3 :: a -> (a1, (a2, a3))Source

pare3 :: (a1, (a2, a3)) -> aSource

Instances

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 -> cSource

class PearShaped4 a a1 a2 a3 a4 | a -> a1 a2 a3 a4 whereSource

Methods

reap4 :: a -> (a1, (a2, (a3, a4)))Source

pare4 :: (a1, (a2, (a3, a4))) -> aSource

Instances

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 -> cSource

class PearShaped5 a a1 a2 a3 a4 a5 | a -> a1 a2 a3 a4 a5 whereSource

Methods

reap5 :: a -> (a1, (a2, (a3, (a4, a5))))Source

pare5 :: (a1, (a2, (a3, (a4, a5)))) -> aSource

Instances

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 -> cSource

class PearShaped6 a a1 a2 a3 a4 a5 a6 | a -> a1 a2 a3 a4 a5 a6 whereSource

Methods

reap6 :: a -> (a1, (a2, (a3, (a4, (a5, a6)))))Source

pare6 :: (a1, (a2, (a3, (a4, (a5, a6))))) -> aSource

Instances

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 -> cSource

class PearShaped7 a a1 a2 a3 a4 a5 a6 a7 | a -> a1 a2 a3 a4 a5 a6 a7 whereSource

Methods

reap7 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, a7))))))Source

pare7 :: (a1, (a2, (a3, (a4, (a5, (a6, a7)))))) -> aSource

Instances

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 -> cSource

class PearShaped8 a a1 a2 a3 a4 a5 a6 a7 a8 | a -> a1 a2 a3 a4 a5 a6 a7 a8 whereSource

Methods

reap8 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, a8)))))))Source

pare8 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, a8))))))) -> aSource

Instances

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 -> cSource

class PearShaped9 a a1 a2 a3 a4 a5 a6 a7 a8 a9 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 whereSource

Methods

reap9 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, a9))))))))Source

pare9 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, a9)))))))) -> aSource

Instances

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 -> cSource

class PearShaped10 a a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 | a -> a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 whereSource

Methods

reap10 :: a -> (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, a10)))))))))Source

pare10 :: (a1, (a2, (a3, (a4, (a5, (a6, (a7, (a8, (a9, a10))))))))) -> aSource

Instances

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 -> cSource