
Aaron Denney wrote:
On 2006-04-08, Nils Anders Danielsson
wrote: On Fri, 07 Apr 2006, "Spencer Janssen"
wrote: inits xs = [] : (zipWith take [1..] $ map (const xs) xs) As this version performs much better and will work as a drop in replacement, I suggest that it be included in the hierarchical libraries. It is not a drop in replacement. The original inits is strict, this one isn't.
The specification of inits (from the Haskell 98 report):
inits :: [a] -> [[a]] inits [] = [[]] inits (x:xs) = [[]] ++ map (x:) (inits xs)
Is that a property many programs depend on? I'd actually call that a bug of the original.
It may break some things: head (Data.List.inits undefined) is an error head (New.Spiffy.inits undefined) is [] -- Chris