28 Dec 12:28
Re: what does @ mean?.....
Chaddaï Fouché <chaddai.fouche <at> gmail.com>
2007-12-28 11:28:45 GMT
2007-12-28 11:28:45 GMT
2007/12/28, Nicholls, Mark <Nicholls.Mark <at> mtvne.com>: > 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ï
RSS Feed