On 2003-08-02 at 14:36PDT "Dominic Steinitz" wrote:
Could someone explain to me why this doesn't work
test l = hs where hs = map (\x -> [x]) [0..abs(l `div` hLen)] hLen = length $ head hs
whereas this does
test l = hs where hs = map (\x -> [x]) (0:[1..abs(l `div` hLen)]) hLen = length $ head hs
I would have thought laziness would allow the compiler to know that hs would contain at least one element and therefore calculate hLen.
Laziness isn't enough to tell it that. It would also have to know that abs never returns an answer less than zero ([0 .. -1] == []). All the compiler knows is that abs returns an integer. Jón PS I don't know the general policy, but I for one dislike getting emails in HTML unless it's /absolutely/ necessary for the content. Multipart/alternative doesn't help much either. -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk