consider:

- Code: Select all
`(defstruct A`

left

right)

(setf i (make-a)

j (make-a :left i))

at this point

- Code: Select all
`>j`

#S(A :LEFT #S(A :LEFT NIL :RIGHT NIL) :RIGHT NIL)

now obviously adding

- Code: Select all
`(setf (a-right i) j)`

will result in a stack overflow,since

- Code: Select all
`>j`

#S(A :LEFT #S(A :LEFT NIL :RIGHT #S(A :LEFT #S(A :LEFT NIL :RIGHT ..... and so on forever

now is there a way to avoid that?

if that helps:i encountered that problem as i was trying to make a BST.i wanted each node of the tree to have 3 fields,one to point to its parent,

two to point to its children...

thanks a lot for your help!