Stability experimental Jafet Safe-Inferred

Description

Cadre is a powerful framework for the organization of heterogeneous units. A live-fire demonstration follows.

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

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

cdaar :: (Cadre b a1 c, Cadre b1 b b2, Cadre a b1 b3) => 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

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