Haskell infinite recursion in list comprehension
I am trying to define a function that accepts a point (x,y) as input, and returns an infinite list corresponding to recursively calling P = (u^2 − v^2 + x, 2uv + y) The initial values of u and v are both 0. The first call would be P = (0^2 - 0^2 + 1, 2(0)(0) + 2) = (1,2) Then that resulting tuple (1,2) would be the next values for u and v, so then it would be P = (1^2 - 2^2 + 1, 2(1)(2) + 2) = (-2,6) and so on. I'm trying to figure out how to code this in Haskell. This is what I have so far: 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)