Look also at safe package <http://hackage.haskell.org/package/safe>
2012/3/13 Chris Wong <chrisyco+haskell-c...@gmail.com> > On Tue, Mar 13, 2012 at 12:24 PM, Chris Smith <cdsm...@gmail.com> wrote: > > On Mon, Mar 12, 2012 at 3:14 PM, Kevin Clees <k.cl...@web.de> wrote: > >> Now my function looks like this: > >> > >> tmp:: [(Int, Int)] -> Int -> (Int, Int) > >> tmp [] y = (0,0) > >> tmp xs y = xs !! (y-1) > > > > Just a warning that this will still crash if the list is non-empty by > > the index exceeds the length. That's because your function is no > > longer recursive, so you only catch the case where the top-level list > > is empty. The drop function doesn't crash when dropping too many > > elements though, so you can do this and get a non-recursive function > > that's still total: > > > > tmp :: [(Int,Int)] -> Int -> (Int, Int) > > tmp xs y = case drop (y-1) xs of > > [] -> (0,0) > > Just (x:_) -> x > > That last line should be > > (x:_) -> x > > without the "Just". Hopefully that'll save a bit of confusion. > > Chris > > > -- > > Chris Smith > > > > _______________________________________________ > > Haskell-Cafe mailing list > > Haskell-Cafe@haskell.org > > http://www.haskell.org/mailman/listinfo/haskell-cafe > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe