[Haskell-cafe] Haskell performance (again)!

Brian Hulley brianh at metamilk.com
Tue Oct 10 01:36:44 EDT 2006


Lennart Augustsson wrote:
> I think your first try looks good.
[snip]
> ...
> addPoly1 p1@(p1h@(Nom p1c p1d):p1t) p2@(p2h@(Nom p2c p2d):p2t)
>    | p1d == p2d = Nom (p1c + p2c) p1d : addPoly1 p1t p2t
>    | p1d < p2d = p1h : addPoly1 p1t p2
>    | p1d > p2d = p2h : addPoly1 p1 p2t
> ...

The last comparison is redundant (this was in the original version too) 
because p1d > p2d is implied (certainly for this case where p1d, p2d::Int) 
by the fall through from not satisfying == and < so how about:

    addPoly1 p1@(p1h@(Nom p1c p1d):p1t) p2@(p2h@(Nom p2c p2d):p2t)
        | p1d == p2d = Nom (p1c + p2c) p1d : addPoly1 p1t p2t
        | p1d < p2d = p1h : addPoly1 p1t p2
        | otherwise = p2h : addPoly1 p1 p2t

Regards, Brian.
-- 
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.

http://www.metamilk.com 



More information about the Haskell-Cafe mailing list