┌─[phoe][phoetower][±][master ↑1 ✓][~/Projects/Git/clcs] └─▪ git log -1 commit 3c6e5b0ba8b70ab75966401d3557d7072dd41e8f (HEAD -> master) Author: Michał "phoe" Herda Date: Sun May 24 20:31:07 2020 +0200 make-no-defun-allowed happy ┌─[phoe][phoetower][±][master ↑1 ✓][~/Projects/Git/clcs] └─▪ git word-diff HEAD^..HEAD diff --git a/conditions.md b/conditions.md index 2cd60a2..bc0791b 100644 --- a/conditions.md +++ b/conditions.md @@ -286,7 +286,7 @@ This approach is messy and prone to errors due to the amount of assignments requ #### Dynamic variables in Common Lisp In contrast to C, certain languages, notably Common [-Lisp and Rust,-]{+Lisp,+} do have built-in support for dynamic variables. We will be restricting our discussion to Common Lisp (CL) for the rest of the book. Common Lisp is an ANSI-standardized dialect of the Lisp programming language that supports various programming paradigms, including procedural, functional, object-oriented, and declarative paradigms. Common Lisp has dynamic scoping as part of its ANSI standard, and it should be possible to execute all of the examples here in any standard-conforming Common Lisp implementation. This happy fact frees us from the need to depend on any particular CL implementation or compiler. Let us begin with a simple example showing how Lisp variables work in general. Contrary to C, it is possible in Lisp to define a function that has access to lexical variables which themselves are defined outside that function definition, substantially reducing the need for global variables in a program (at least non-dynamic ones).