Tim Toorop timtoorop at
Sat Apr 8 15:36:04 EDT 2006

Aaron Denney wrote:
> On 2006-04-08, Chris Kuklewicz <haskell at> wrote:
>>> Is the head of the inits of undefined really an error?
>>> Since the head of inits []  is also []  ...
>>> But if you really want that undefined to produce an error.. you could
>>> just :
>>>        inits' xn@(_:_) = zipWith take [0..] $ map (const xn) $ undefined:xn
>>>        inits' _        = undefined
>> Exactly.  Now inits' *is* a drop in replacement for inits.
> Right, but the new spiffy inits seems to be a strict superset.  Does
> anything plausibly depend on the strictness of the original.  I think it
> was written that way for clarity, not for the strictness properties.
The inits' _ = undefined  can be left out, but may be useful to some 
On the other hand, I think the new spiffy inits is quite clear once you 
notice why its  map (const xn) $ undefined:xn

This version doesn't use a weird recursive function.
Its just..  the definition of inits I think.

first element of inits,  take the first element.
2nd element of inits,  take the first plus the next element

But that's just my logic... probably why I wrote it like this in the 
first place
  ( just wanted to see if I could write the inits without using a book ;)  )

More information about the Libraries mailing list