Haskell unendliche Rekursion im Listenverständnis

Ich versuche eine Funktion zu definieren, die einen Punkt (x, y) als Eingabe akzeptiert und eine unendliche Liste zurückgibt, die einem rekursiven Aufruf von @ entsprich

P = (u ^ 2 - v ^ 2 + x, 2uv + y)

Die Anfangswerte von u und v sind beide 0.

Der erste Anruf wäre

P = (0 ^ 2 - 0 ^ 2 + 1, 2 (0) (0) + 2) = (1,2)

Dann wäre das resultierende Tupel (1,2) der nächste Wert für u und v, also wäre es

P = (1 ^ 2 - 2 ^ 2 + 1, 2 (1) (2) + 2) = (-2,6)

und so weiter

Ich versuche herauszufinden, wie dies in Haskell codiert wird. Das habe ich bisher:

o :: Num a =>(a,a) -> [(a,a)]
o (x,y) = [(a,b)| (a,b)<- [p(x,y)(x,y)]]   
  where p(x,y)(u,v) = ((u^2)-(v^2)+x,(2*u*v)+y)

Ich bin mir wirklich nicht sicher, wie ich das machen soll. Jede Hilfe wäre dankbar!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage