-- one dot (.)
ghci
> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
> :t .
<interactive>:1:1: error: parse error on input ‘.’
-- two dots (.)(.)
(.) :: (b1 -> c1 ) -> (a1 -> b1) -> a1 -> c1
(.) :: (b2 -> c2) -> (a2 -> b2) -> a2 -> c2
b1 = b2 -> c2
c1 = (a2 -> b2) -> a2 -> c2
(.)(.) ::
(a1 -> b1 ) -> a1 -> c1
(a1 -> b1 ) -> a1 -> ((a2 -> b2) -> a2 -> c2)
(a1 -> (b2 -> c2)) -> a1 -> ((a2 -> b2) -> a2 -> c2)
(a1 -> b2 -> c2 ) -> a1 -> (a2 -> b2) -> a2 -> c2
ghci
> :t (.)(.)
(.)(.) :: (a1 -> b -> c) -> a1 -> (a2 -> b) -> a2 -> c
-- three dots (.)(.)(.) = (.).(.)
(.) :: (b1 -> c1 ) -> (a1 -> b1 ) -> a1 -> c1
(.) :: (b2 -> c2) -> (a2-> b2) -> a2 -> c2
(.) :: (b3 -> c3) -> (a3 -> b3) -> a3 -> c3
b1 = b2 -> c2
b1 = (a3 -> b3) -> a3 -> c3
(.).(.)
(b3 -> c3) -> (a2 -> b2) -> a2 -> c2
(b3 -> c3) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
ghci
> :t (.)(.)(.)
(.)(.)(.) :: (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c
> :t (.).(.)
(.).(.) :: (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c
> :t (.)((.)(.))
(.)((.)(.)) :: (a1 -> a2 -> b -> c) -> a1 -> a2 -> (a3 -> b) -> a3 -> c
> :t ((.)(.))(.)
((.)(.))(.) :: (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c
-- four dots (.)(.)(.)(.) = ((.)(.)(.))(.)
(.)(.)(.) :: (b3 -> c3 ) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
(.) :: (b4 -> c4) -> (a4 -> b4) -> a4 -> c4
b3 = b4 -> c4
c3 = (a4 -> b4) -> a4 -> c4
(.)(.)(.)(.) ::
(a2 -> a3 -> b3) -> a2 -> a3 -> c3
(a2 -> a3 -> b4 -> c4) -> a2 -> a3 -> ((a4 -> b4) -> a4 ->c4)
(a2 -> a3 -> b4 -> c4) -> a2 -> a3 -> (a4 -> b4) -> a4 ->c4
ghci
> :t (.)(.)(.)(.)
(.)(.)(.)(.) :: (a1 -> a2 -> b -> c) -> a1 -> a2 -> (a3 -> b) -> a3 -> c
> :t (.)(.)((.)(.))
(.)(.)((.)(.)) :: (b1 -> b2 -> c) -> (a1 -> b1) -> a1 -> (a2 -> b2) -> a2 -> c
> :t (.)((.)(.)(.))
(.)((.)(.)(.)) :: (a1 -> b -> c) -> a1 -> (a2 -> a3 -> b) -> a2 -> a3 -> c
> :t ((.)(.))(.)(.)
((.)(.))(.)(.) :: (a1 -> a2 -> b -> c) -> a1 -> a2 -> (a3 -> b) -> a3 -> c
> :t ((.)(.)(.))(.)
((.)(.)(.))(.) > a2 -> b -> c) -> a1 -> a2 -> (a3 -> b) -> a3 -> c
-- five dots (.)(.)(.)(.)(.) = ((.)(.)(.))(.)(.)
(.)(.)(.) :: (b3 -> c3 ) -> (a2 -> a3 -> b3 ) -> a2 -> a3 -> c3
(.) :: (b4 -> c4) -> (a4 -> b4) -> a4 -> c4
(.) :: (b5 -> c5) -> (a5 -> b5) -> a5 -> c5
b3 = b4 -> c4
= a5 -> c5
(.)(.)(.)(.)(.) ::
a2 -> a3 ->c3
(b5 -> c5) -> (a5 -> b5) -> ((a4 -> b4) -> a4 -> c4)
(b5 -> c5) -> (a5 -> b5) -> ((a4 -> a5) -> a4 -> c5)
(b5 -> c5) -> (a5 -> b5) -> (a4 -> a5) -> a4 -> c5
ghci
> :t (.)(.)(.)(.)(.)
(.)(.)(.)(.)(.) :: (b1 -> c) -> (b2 -> b1) -> (a -> b2) -> a -> c
> :t (.)(.)(.)((.)(.))
(.)(.)(.)((.)(.)) :: (a1 -> a2 -> a3 -> b -> c) -> a1 -> a2 -> a3 -> (a4 -> b) -> a4 -> c
> :t (.)(.)((.)(.)(.))
(.)(.)((.)(.)(.)) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
> :t (.)((.)(.)(.)(.))
(.)((.)(.)(.)(.)) :: (a1 -> a2 -> a3 -> b -> c) -> a1 -> a2 -> a3 -> (a4 -> b) -> a4 -> c
> :t ((.)(.))(.)(.)(.)
((.)(.))(.)(.)(.) :: (b1 -> c) -> (b2 -> b1) -> (a -> b2) -> a -> c
> :t ((.)(.)(.))(.)(.)
((.)(.)(.))(.)(.) :: (b1 -> c) -> (b2 -> b1) -> (a -> b2) -> a -> c
> :t ((.)(.)(.)(.))(.)
((.)(.)(.)(.))(.) :: (b1 -> c) -> (b2 -> b1) -> (a -> b2) -> a -> c
-- five dots (.).(.).(.) = ((.).(.)).(.) = (.)((.).(.))(.)
(.) :: (b4 -> c4 ) -> (a4 -> b4 ) -> (a4 -> c4)
(.)(.)(.) :: (b3 -> c3) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
(.) :: (b5 -> c5) -> (a5 -> b5) -> (a5 -> c5)
b4 = b3 -> c3
= (a5 -> b5) -> (a5 -> c5)
(.).(.).(.) = ((.).(.)).(.) = (.)((.).(.))(.) = (.)((.)(.)(.))(.) ::
(b5 -> c5) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
(b5 -> c5) -> (a2 -> a3 -> a5 -> b5) -> a2 -> a3 -> a5 -> c5
ghci
> :t (.).(.).(.)
(.).(.).(.) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
> :t (.).((.).(.))
(.).((.).(.)) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
> :t ((.).(.)).(.)
((.).(.)).(.) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
> :t ((.).)(.).(.)
((.).)(.).(.) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
> :t (.).(.)(.(.))
(.).(.)(.(.)) :: (b1 -> ((a1 -> b2) -> a1 -> c1) -> c2) -> (a2 -> b1) -> a2 -> (b2 -> c1) -> c2
-- seven dots (.).(.).(.).(.) = (.).(.).((.).(.))
(.) :: (b4 -> c4 ) -> (a4 -> b4 ) -> (a4 -> c4)
(.)(.)(.) :: (b3 -> c3) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
(.)(.)(.) :: (b7 -> c7) -> (a6 -> a7 -> b7) -> a6 -> a7 -> c7
b4 = b3 -> c3
b4 = (a6 -> a7 -> b7) -> a6 -> a7 -> c7
(.).(.).(.).(.) = (.).(.).((.).(.)) = ((.).(.)).((.).(.)) = (.)((.).(.))((.).(.)) = (.)((.)(.)(.))((.)(.)(.)) ::
a4 -> c4
(b7 -> c7) -> (a2 -> a3 -> b3) -> a2 -> a3 -> c3
(b7 -> c7) -> (a2 -> a3 -> a6 -> a7 -> b7) -> a2 -> a3 -> a6 -> a7 -> c7
ghci
> :t (.).(.).(.).(.)
(.).(.).(.).(.) :: (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c
> :t (.).(.).((.).(.))
(.).(.).((.).(.)) :: (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c
> :t ((.).(.)).((.).(.))
((.).(.)).((.).(.)) :: (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c
> :t (.).((.).((.).(.)))
(.).((.).((.).(.))) :: (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c
> :t ((.)(.)(.)).((.)(.)(.))
((.)(.)(.)).((.)(.)(.)) :: (b -> c) -> (a1 -> a2 -> a3 -> a4 -> b) -> a1 -> a2 -> a3 -> a4 -> c