
On Sat, Oct 30, 2010 at 11:55:48AM +0100, Patrick Browne wrote:
Hi, Below are two questions on commutative operations in Haskell.
infixl 5 `com` com :: Int -> Int -> Int x `com` y = (x + y)
commutative com a b = (a `com` b) == (b`com`a)
Note that the first parameter to commutative shadows the previous definition of com, I don't know if that's what you intended.
-- 1 + 3 == 3 + 1 -- This gives true by virtue of the value of LHS and RHS being equal after the plus operation
-- Question 1 -- commutative com 1 3 -- This also gives true. Is it because of commutative equation or because of the plus operation?
I'm not quite sure I understand your question. In any case: commutative com 1 3 = (1 `com` 3) == (3 `com` 1) {- definition of 'commutative' -} = (1 + 3) == (3 + 1) {- definition of 'com' -} = True
-- Question 2 -- In Haskell can commutativity be specified as a property of infix operations?
No, it can't. -Brent