[Haskell-cafe] Is "take" behaving correctly?

Don Stewart dons at galois.com
Tue Sep 11 19:48:11 EDT 2007


byorgey:
>    On 9/11/07, Don Stewart <[1]dons at galois.com> wrote:
> 
>      byorgey:
>      >    On 9/11/07, PR Stanley <[1]prstanley@[2]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
> 
>    Hmm, that's funny, I don't recall ever hearing of those functions... =)
> 
>    ooo, Don has a shiny new e-mail address!
> 

And a shiny new job in a shiny new city :-)

-- Don


More information about the Haskell-Cafe mailing list