inits

Aaron Denney wnoise at ofb.net
Sat Apr 8 14:22:08 EDT 2006


On 2006-04-08, Nils Anders Danielsson <nad at cs.chalmers.se> wrote:
> On Fri, 07 Apr 2006, "Spencer Janssen" <spencerjanssen at gmail.com> 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
-><-



More information about the Libraries mailing list