
Daniel Fischer
Am Sonntag 18 Oktober 2009 13:11:07 schrieb Will Ness:
(2`mod`) is a unary operation :: (Integral a) => a -> a. Putting it inside backticks would require it be a binary infix op, causing a type mis-match.
instance (Integral a) => Integral (b -> a) where ...
Evil, yes, but then f `(2 `mod`)` x would type-check.
Any problem that could be introduced for operators could be introduced for the regular named values as well.
But anyway, there are operators where a backticked section would type-check:
f `(g `.`)` x
That's not good.
Why? Is it not just (g .) f x ? What's the problem with it? But, the backticked parens syntax is less necessary. What I'd really like is for (`+`1) syntax to become legal. Prelude> :t let add=(+) in (`add`2) let add=(+) in (`add`2) :: (Num a) => a -> a Are we not supposed to be able to substitute equal for equal in Haskell? Prelude> :t (`(+)`2) <interactive>:1:2: parse error on input `(' Prelude> :t (`+`2) <interactive>:1:2: parse error on input `+'