Post #749069
2026-03-10 10:14 UTC
@cdegroot I think you might have a factual error on page 174 in the section called “Emacs Lisp.” You write this:
In a nutshell, Emacs Lisp (“elisp”) is a classical Lisp-1 with dynamic variable scoping. As you may recall, a Lisp-1 has a shared namespaces for symbols depicting variables and symbols depicting functions, while a Lisp-2 has two such namespaces; Scheme is a Lisp-1, and Common Lisp a Lisp-2. The debate on which one is better will likely never be settled, so it was probably either a coin-toss for Stallman or simpy a matter of expediency, if he thought a Lisp-1 would be simpler to implement.
I believe Emacs Lisp is a Lisp-2 system, unless I am misunderstanding some finer point about the difference between Lisp-1 and Lisp-2 systems. For example, Emacs Lisp has defvar, setq, defun, and funcall. You can use setq to set the value of a variable f and you can also do something like (defun f () (princ (format f))). So unless I am mistaken, that makes Emacs Lisp a Lisp-2.
@screwlisp
#tech #software #Lisp
Replies (3)
-
@kalmanreti@mastodon.social 2026-03-10 11:58
@ramin_hal9001 @screwlisp @cdegroot And also local variable scoping has been available for a long time as well.
-
@xameer@mathstodon.xyz 2026-03-10 12:27
@ramin_hal9001 @screwlisp @cdegroot gotta check your dotfiles again
-
@cdegroot@mstdn.ca 2026-03-10 13:04
@ramin_hal9001 @screwlisp Heh. I think you're right. I wonder how that passed all the reviews. I'll have to dig into my source material, maybe I was confused with a predecessor?