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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe