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!