我正在尝试编写一个使用此函数的 Haskell 函数:
E(x,y)(i,j) = ((i*i) - (j*j) + x, (2*i*j) + y)
F(x,y)
一个点的列表(x,y)
应该是一个无限的项目列表:
F(x,y) = {(0,0) , F(x,y)(0,0), F(x,y)(F(x,y)(0,0)), F(x, y)(F(x,y)(F(x,y)(0,0))),等等}
根据我的理解,列表的第 n 个条目F(x,y)
是E(x,y)
与自身组合 n 次然后应用于的函数(0,0)
到目前为止,这是我的想法:
entry :: (Int,Int) -> [(Int,Int)]
efunction (i,j)(x,y) = ((i*i) - (j*j) + x, (2*i*j) + y)
entry (x,y) = efunction(0,0)(x,y) where
efunction = (0,0) : iterate efunction(i,j)
而且,(x,y)=(0,0)
并且保持静止。唯一变化的变量是(i,j)
。
样本输出将是
entry(1,1) =
0,0
1,1
1,3
-7,7
1,-97
我对 Haskell 很陌生,所以我一直在试图弄清楚为什么这不起作用以及如何使它真正起作用。有什么帮助吗?