(.)
принимает две функции, которые принимают значение one и возвращают значение:
(.) :: (b -> c) -> (a -> b) -> a -> c
Так как (.)
принимает два аргумента, мне кажется, что (.).(.)
должен быть недействительным, но он отлично выглядит:
(.).(.) :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c
Что здесь происходит? Я понимаю, что этот вопрос плохо сформулирован... все функции действительно просто принимают один аргумент благодаря карри. Возможно, лучший способ сказать, что типы не совпадают.