haskell接受一个(x,y)并返回一个带有Orbit(x,y)定义的无限列表

时间:2016-10-02 22:47:27

标签: haskell mandelbrot

函数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)

但是我修改的任何内容都会出错。别人可以帮助我并解释它为什么有效吗?我认为它需要使用递归。

0 个答案:

没有答案