hugs(Hugs Version February 2001)にて
x::Integer->Integer
x 0=0
x n=n+x (n-1)
とかやって、
x 1000
くらいなら
500500
という感じで動くのですが、
x 10000
くらいになると
ERROR - Control stack overflow
とか言われてさみしいのですが、
末尾再帰って無いのですか?

x0::Integer->Integer->Integer
x0 0 b=b
x0 a b=x0 (a-1) (a+b)
x::Integer->Integer
x n=x0 n 0
とかもやってみたんですが同じでした。