I think you mean that the value could be different each time the `let` is 
evaluated? In which case we're saying the same thing — it's evaluated at 
runtime, not compile time.

(When something like `let x = ....` appears in a proc, there isn't a single 
variable `x` whose value changes. Instead, each call to that proc creates a 
_new_ local variable `x` with a single immutable value, and `x` disappears when 
the proc exits. It's called "lexical scoping". This may not seem like a big 
distinction, but it is. Some early languages like LISP 1.x did things the way 
you describe, but it turns out to cause a lot of problems with recursive 
functions, closures, etc.)

Reply via email to