apfelmus: > Hello, > > inits [] = [[]] > inits (x:xs) = [[]] ++ map (x:) (inits xs) > > as specified in Data.List has a "semantic bug", namely it's too strict: > > inits (1:_|_) = []:_|_ > > as opposed to the expected > > inits (1:_|_) = []:[1]:_|_ > > A correct version would be > > inits xs = []:case xs of > [] -> [] > (x:xs) -> map (x:) (inits xs) > > The Haskell report specifies how inits has to behave, so this is a > problem in the report, not in a concrete implementation. Where can I > report a bug report for the report? ;) > > Regards, > apfelmus
Well, right here. There are other strictness issues either differing from the spec, or not clearly defined (foldl', for example). A useful tool for checking these is the StrictCheck/ChasingBottoms library, QuickCheck for partial values, by the way. -- Don _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime