|
|
|
|
|
by kazinator
3897 days ago
|
|
Or rather, one needs to learn which constructs destructively manipulate a global environment, and which perform lexical binding. In Python, an inner def will lexically bind a function, creating a closure. Python is not less dynamic than Ruby. In Common Lisp, a defun inside a defun will behave similarly to Ruby; but if you want lexically scoped local functions, you use a different operator, namely flet or labels. Scheme has a define which is lexical: it brings a lexical identifier into the scope for forms which follow. Lexically scoped items, even in a dynamic language, in fact can be "cast in stone when you press the compile button"; they are cast in that stone which is the entire compiled environment of the surrounding function. |
|