bhurt: > > My apologies for wasting bandwidth on what I'm sure is a stupid newbie > question. > > Given: > > -- Reimplementing the wheel here, I know > > data Option a = Some a | Empty > deriving (Eq,Ord,Show,Read) > > nth 0 (x:xs) = Some x > nth i (x:xs) = if i < 0 then Empty else nth (i-1) xs > nth i [] = Empty > > That: > > nth 1000000 [1..10000000] > > returns the right answer, while: > > nth 1000000 [1..]
Now I'm really intrigued, since the standard list-index function also fails: Prelude> [1..] !! (10^6) *** Exception: stack overflow It's implemeeted roughly as: nth xs n | n < 0 = Nothing nth [] _ = Nothing nth (x:_) 0 = Just x nth (_:xs) n = xs `nth` (n-1) main = print $ [1..] `nth` (10^6) -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe