
Lovely....thank you very much....another small step forward.
-----Original Message-----
From: Chaddaï Fouché [mailto:chaddai.fouche@gmail.com]
Sent: 28 December 2007 11:29
To: Nicholls, Mark
Cc: Alfonso Acosta; haskell-cafe@haskell.org
Subject: Re: [Haskell-cafe] what does @ mean?.....
2007/12/28, Nicholls, Mark
So in the example given...
mulNat a b | a <= b = mulNat' a b b | otherwise = mulNat' b a a where mulNat' x@(S a) y orig | x == one = y | otherwise = mulNat' a (addNat orig y) orig
Is equivalent to
mulNat a b | a <= b = mulNat' a b b | otherwise = mulNat' b a a where mulNat' (S a) y orig | (S a) == one = y | otherwise = mulNat' a (addNat orig y) orig
?
Yes, but in the second version, it has to reconstruct (S a) before comparing it to "one" where in the first it could do the comparison directly. In this cas there may be some optimisation involved that negate this difference but in many case it can do a real performance difference. The "as-pattern" (@ means as) is both practical and performant in most cases. -- Jedaï