
5 Jan
2007
5 Jan
'07
8:17 p.m.
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..] blows stack. Furthermore, given: makelist i = i : (makelist (i-1)) Why is it that: nth 1000000 (makelist 1) blows stack? What are the rules for being tail recursive in Haskell? I'm an Ocaml programmer, so I'm familiar with this problem, I just don't see the solution. Some help would be appreciated. Thanks in advance, Brian