函数P(x,y)定义为:
P(x,y)(u,v) = (u^2 - v^2 + x, 2uv + y)
并将点(x,y)的Orbit O(x,y)定义为无限的项目列表:
O(x,y) = {(0,0), P(x,y)(0,0), P(x,y)(P(x,y)(0,0)), P(x,y)(P(x,y)(P(x,y)(0,0))),..}
所以我需要编写Haskell函数,它将单个点(x,y)作为参数并返回一个对应于O(x,y)的无限列表。
我尝试使用辅助函数编写此函数,其中:
orbit :: (Eq i, Num i) => i -> i -> [i]
orbit x y = (x,y) : orbit(p(x,y)(u,v))
where p(x,y)(u,v) = phelp x y
phelp u v = ((0^2)-(0^2)+x,(2*0*0)+y)
但是我修改的任何内容都会出错。别人可以帮助我并解释它为什么有效吗?我认为它需要使用递归。