[Haskell-cafe] Re: Is "take" behaving correctly?
jules at jellybean.co.uk
Thu Sep 13 04:43:38 EDT 2007
Neil Mitchell wrote:
>> 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.
More information about the Haskell-Cafe