Hi,
I can write:
*Main> let yes = not . not
*Main> :t yes
yes :: Bool -> Bool
But not:
*Main> let isNotEqual = not . (==)
<interactive>:1:23:
Couldn't match expected type `Bool'
against inferred type `a -> Bool'
Probable cause: `==' is applied to too few arguments
In the second argument of `(.)', namely `(==)'
In the expression: not . (==)
Why?
Oscar