type t = { a : int; b : t * t; (* extra info for optimization *) } let rec x = { a=1; b = (x, y) } and y = { a=1; b = (y,x) }