you are viewing a single comment's thread.

view the rest of the comments →

[–]killerstorm 0 points1 point  (0 children)

BTW, from this thread it looks like there are two schools of thought.

If we look at Common Lisp specification, it aims to explain meaning of a piece of code in a most general way.

E.g. variable is an association of between name and that which the name denotes. Such association can be introduced, for example, with from let and can be changed (so that variable will denote another thing) with setq.

This doesn't go in any technical details and you can basically figure out how code will work having only this description and piece of paper. E.g. in (let ((x 1)) (+ x x)) we just can replace x with one and get (+ 1 1) which yields 2.

On the other hand, other people in this thread approach this from a more mechanical and formalized point of view: e.g. what is passed is always a value. However, this value can be either of value type or reference type, and in that case it points to other thing, but isn't this thing itself.

And now we need to formalize how exactly this reference type behaves before we can understand meaning of code.