(.) takes two functions that take one value and return a value:
(.) :: (b -> c) -> (a -> b) -> a -> c
(.) takes two arguments, I feel like
(.).(.) should be invalid, but it's perfectly fine:
(.).(.) :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c
What is going on here? I realize this question is badly worded...all functions really just take one argument thanks to currying. Maybe a better way to say it is that the types don't match up.