[Haskell-cafe] Dropping trailing nulls from a list of list

Udo Stenzel u.stenzel at web.de
Wed Mar 8 14:07:24 EST 2006

Jeff.Harper at handheld.com wrote:
> Today, I reviewed a function I wrote a few months ago.  The function,
> dropTrailNulls, takes a list of lists and drops trailing null lists.  For
> instance:
> *Main> dropTrailNulls [[1],[2,3],[],[]]
> [[1],[2,3]]

dropTrailNulls = foldr dtn []
    dtn [] [] = []
    dtn  x xs = x:xs
> dropTrailNulls list = reverse (dropWhile null (reverse list))

As the other responses said, this is needlessly strict.  Work on
deforesting reverse exists, but you can't count on it happenig.

> is there a more efficient idiom for addressing these problems?

Well, there's always the basic fold.  I'm not sure there's any lesson to
be learnt here other than "fold is your friend".

F:	Was ist ansteckend und kommutiert?
A:	Eine Abelsche Grippe.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org//pipermail/haskell-cafe/attachments/20060308/5802fb34/attachment.bin

More information about the Haskell-Cafe mailing list