
Chaddaï Fouché wrote:
2007/7/11, Andrew Coppin
: Ouch! That's gotta sting...
I wasn't aware that this function was so leathal. I use it constantly all the time...
It isn't that "lethal" usually. It's only because he was using it on an infinite stream that it hurt so much... If you use it on a normal stdin or a hGetContents on a file it will be fine (though you will lose the advantage of its laziness, for example constant memory treatment).
Loose lazyness? Oh wait - you mean the inadvertent length thing? We already have null, but how about a standard function in Data.List for testing whether the length is longer than some upper limit? lengthUpTo :: Int -> [x] -> Int lengthUpTo n = length . take n shorterThan :: Int -> Bool shorterThan n = (n >) . lengthUpTo (n+1) longerThan :: Int -> Bool longerThan n = (n <) . lengthUpTo n lengthEquals :: Int -> Bool lengthEquals n = (n ==) . lengthUpTo (n+1) (Perhaps need better names...)