Got it! Regards, Kashyap On Mon, Mar 11, 2019 at 4:23 AM Alexander Burger <[email protected]> wrote:
> Hi Kashyap, > > > Another clarification - I was looking at the implementation of consName > > After this assignment, p points to the CDR of the cell - > > p = symPtr(p); > > Correct. > > > > However, this assignment assigns to ((p)->car) > > val(p) = n; > > I figured out what's happening is equivalent of *(word*)p = val?:p; > > To be exact, 'val(p) = n' is equivalent to '*(word*)p = n'. > > > > I got a little tripped by the definition of val - because "p" is really > not > > a Cell pointer after the symPtr assignment right? I mean, p->cdr is > invalid > > at this point correct? > > Yes, correct. val(p) can be used both for list cells (where p points to > the CAR > of the cell) and for symbol cells (where p points to the CDR of the cell > (which > in turn holds the VAL of that symbol)). > > Thus, p->cdr points outside of this cell, to the next, not related, cell > in the > heap. > > - Alex > > -- > UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe >
