[Haskell-cafe] Is "take" behaving correctly?
Don Stewart
dons at galois.com
Tue Sep 11 19:40:13 EDT 2007
byorgey:
> On 9/11/07, PR Stanley <[1]prstanley at ntlworld.com> wrote:
>
> Hi
> take 1000 [1..3] still yields [1,2,3]
> I thought it was supposed to return an error.
> Any ideas?
> Thanks, Paul
>
> If for some reason you want a version that does return an error in that
> situation, you could do something like the following:
>
> take' n _ | (n <= 0) = []
> take' n [] | (n > 0) = error "take': list too short"
> | otherwise = []
> take' n (x:xs) = x : take' (n-1) xs
And we'd call it unsafeTake, just like unsafeFromJust and unsafeTail :-)
-- Don
More information about the Haskell-Cafe
mailing list