Neil Mitchell wrote:
Hi

A more serious point is that in some cases we might want take to
underapproximate, or zip to truncate (or tail [] = [] ?). I don't
think there's
always a clear "library" choice here.

I have a zipWithEq function I often use, which crashes if the zip'd
lists aren't equal. I also have tailSafe which does the tailSafe [] =
[] behaviour. I created a hackage package "safe" for the tailSafe
function and others, http://www-users.cs.york.ac.uk/~ndm/safe/ . If
anyone wants to extend that with deliberately unsafe functions, such
as zipWithUnsafe, zipUnsafe, takeUnsafe etc, I'd be happy to accept a
patch. If not, I'll probably do it myself at some point in the
(potentially distant) future.

Of course we have tailSafe in the standard library (if I correctly understand what you mean) as "drop 1" and headSafe as "take 1".

I've rather got used to the exact details of head/tail, take/drop and zip but I agree it's a bit arbitrary: counterintuitive until you learn which is which and which is what.

Although I appluad the semantics of the safe package, I'm not delighted with the idea of replacing our concise elegant standard library names with uglyAndRatherLongCamelCaseNamesThatCouldBePerlOrEvenJava though. Conciseness of expression is a virtue.

Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to