_1 a1 a2 a3 = a1 (a2 a3)
-}
Prelude> :t (.)(.)
(.)(.) :: (a1 -> b -> c) -> a1 -> (a -> b) -> a -> c
(.) a1 a2 a3 = a1 (a2 a3)
(.)(.) a2 a3 = (.) (a2 a3) = (\a4 a5 -> (a2 a3) (a4 a5))
_2 a1 a2 a3 a4 = (a1 a2) (a3 a4)
Prelude> :t _2
_2 :: (t -> t2 -> t3) -> t -> (t1 -> t2) -> t1 -> t3
-}
Prelude> :t (.)(.)(.)
(.)(.)(.) :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c
_2 (.) a1 a2 a3 = ((.) a1) (a2 a3) = (\a4 -> a1 ((a2 a3) a4))
_3 a1 a2 a3 a4 = a1 ((a2 a3) a4)
Prelude> :t _3
_3 :: (t2 -> t3) -> (t -> t1 -> t2) -> t -> t1 -> t3
-}
Prelude> :t (.)(.)(.)(.)
(.)(.)(.)(.)
:: (a -> a1 -> b -> c) -> a -> a1 -> (a2 -> b) -> a2 -> c
_3 (.) a2 a3 a4 = (.) ((a2 a3) a4) = (\a5 a6 -> ((a2 a3) a4) (a5 a6))
_4 a1 a2 a3 a4 a5 = ((a1 a2) a3) (a4 a5)
Prelude> :t _4
_4 :: (t -> t2 -> t3 -> t4) -> t -> t2 -> (t1 -> t3) -> t1 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)
(.)(.)(.)(.)(.) :: (b1 -> c) -> (b -> b1) -> (a -> b) -> a -> c
_4 (.) a2 a3 a4 a5 = (((.) a2) a3) (a4 a5) = a2 (a3 (a4 a5))
_5 a1 a2 a3 a4 = a1 (a2 (a3 a4))
Prelude> :t _5
_5 :: (t2 -> t3) -> (t1 -> t2) -> (t -> t1) -> t -> t3
-}
Prelude> :t (.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)
:: (b -> b1 -> c) -> (a -> b) -> a -> (a1 -> b1) -> a1 -> c
_5 (.) a2 a3 a4 = (.) (a2 (a3 a4)) = (\a5 a6 -> (a2 (a3 a4)) (a5 a6))
_6 a1 a2 a3 a4 a5 = (a1 (a2 a3)) (a4 a5)
Prelude> :t _6
_6 :: (t2 -> t3 -> t4) -> (t -> t2) -> t -> (t1 -> t3) -> t1 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)
:: (a -> b -> c) -> a -> (a1 -> a2 -> b) -> a1 -> a2 -> c
_6 (.) a2 a3 a4 a5 = ((.) (a2 a3)) (a4 a5) = (\a6 -> (a2 a3) ((a4 a5) a6))
_7 a1 a2 a3 a4 a5 = (a1 a2) ((a3 a4) a5)
Prelude> :t _7
_7 :: (t -> t2 -> t3) -> t -> (t1 -> t4 -> t2) -> t1 -> t4 -> t3
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)
:: (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c
_7 (.) a2 a3 a4 a5 = ((.) a2) ((a3 a4) a5) = (\a6 -> a2 (((a3 a4) a5) a6))
_8 a1 a2 a3 a4 a5 = a1 (((a2 a3) a4) a5)
Prelude> :t _8
_8 :: (t3 -> t4) -> (t -> t1 -> t2 -> t3) -> t -> t1 -> t2 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (a -> a1 -> a2 -> b -> c)
-> a
-> a1
-> a2
-> (a3 -> b)
-> a3
-> c
_8 (.) a2 a3 a4 a5 = (.) (((a2 a3) a4) a5) = (\a6 a7 -> (((a2 a3) a4) a5) (a6 a7))
_9 a1 a2 a3 a4 a5 a6 = (((a1 a2) a3) a4) (a5 a6)
Prelude> :t _9
_9
:: (t -> t2 -> t3 -> t4 -> t5)
-> t
-> t2
-> t3
-> (t1 -> t4)
-> t1
-> t5
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (b1 -> b -> c) -> (a -> b1) -> a -> (a1 -> b) -> a1 -> c
_9 (.) a2 a3 a4 a5 a6 = ((((.) a2) a3) a4) (a5 a6) = (a2 (a3 a4)) (a5 a6)
_10 a1 a2 a3 a4 a5 = (a1 (a2 a3)) (a4 a5)
Prelude> :t _10
_10 :: (t2 -> t3 -> t4) -> (t -> t2) -> t -> (t1 -> t3) -> t1 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (a -> b -> c) -> a -> (a1 -> a2 -> b) -> a1 -> a2 -> c
_10 (.) a2 a3 a4 a5 = ((.) (a2 a3)) (a4 a5) = (\a6 -> (a2 a3) ((a4 a5) a6))
_11 a1 a2 a3 a4 a5 = (a1 a2) ((a3 a4) a5)
Prelude> :t _11
_11 :: (t -> t2 -> t3) -> t -> (t1 -> t4 -> t2) -> t1 -> t4 -> t3
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c
_11 (.) a2 a3 a4 a5 = ((.) a2) ((a3 a4) a5) = (\a6 -> a2 (((a3 a4) a5) a6))
_12 a1 a2 a3 a4 a5 = a1 (((a2 a3) a4) a5)
Prelude> :t _12
_12 :: (t3 -> t4) -> (t -> t1 -> t2 -> t3) -> t -> t1 -> t2 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (a -> a1 -> a2 -> b -> c)
-> a
-> a1
-> a2
-> (a3 -> b)
-> a3
-> c
_12 (.) a2 a3 a4 a5 = (.) (((a2 a3) a4) a5) = (\a6 a7 -> (((a2 a3) a4) a5) (a6 a7))
_13 a1 a2 a3 a4 a5 a6 = (((a1 a2) a3) a4) (a5 a6)
Prelude> :t _13
_13
:: (t -> t2 -> t3 -> t4 -> t5)
-> t
-> t2
-> t3
-> (t1 -> t4)
-> t1
-> t5
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (b1 -> b -> c) -> (a -> b1) -> a -> (a1 -> b) -> a1 -> c
_13 (.) a2 a3 a4 a5 a6 = ((((.) a2) a3) a4) (a5 a6) = (a2 (a3 a4)) (a5 a6)
_14 a1 a2 a3 a4 a5 = (a1 (a2 a3)) (a4 a5)
Prelude> :t _14
_14 :: (t2 -> t3 -> t4) -> (t -> t2) -> t -> (t1 -> t3) -> t1 -> t4
-}
Prelude> :t (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
:: (a -> b -> c) -> a -> (a1 -> a2 -> b) -> a1 -> a2 -> c
_14 (.) a2 a3 a4 a5 = ((.) (a2 a3)) (a4 a5) = (\a6 -> (a2 a3) ((a4 a5) a6))
_15 a1 a2 a3 a4 a5 = (a1 a2) ((a3 a4) a5)
Prelude> :t _15
_15 :: (t -> t2 -> t3) -> t -> (t1 -> t4 -> t2) -> t1 -> t4 -> t3
-}