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

John Meacham john at repetae.net
Tue Sep 11 19:45:47 EDT 2007


On Tue, Sep 11, 2007 at 07:38:18PM -0400, Brent Yorgey wrote:
> On 9/11/07, PR Stanley <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


you could also do something like

take' n xs = take n (xs ++ error "I want more!")


        John

-- 
John Meacham - ⑆repetae.net⑆john⑈


More information about the Haskell-Cafe mailing list