
8 Apr
2006
8 Apr
'06
2:22 p.m.
On 2006-04-08, Nils Anders Danielsson
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. -- Aaron Denney -><-