freenode/#lisp - IRC Chatlog
Search
4:47:32
madrik
Before Common Lisp's condition system, how did earlier Lisp such as Maclisp and Interlisp handle errors and exceptions? Was it something like CATCH and THROW only?
4:52:10
beach
Interesting relate fact: The condition system was inspired by that of Multics PL/I, and PL/I on Multics was an excellent development environment, especially considering when it existed.
4:53:16
edgar-rft
madrik: http://www.softwarepreservation.org/projects/LISP/ has most of the the old Lisp manuals back to 1958
5:32:05
beach
They were replaced by macros for reasons of performance. Macros are handled at compile time.
5:38:53
beach
madrik: Initially, Emacs Lisp had only dynamic bindings, whereas Maclisp had dynamic bindings in the interpreter and lexical bindings in the compiler.
5:40:45
beach
It was less of a problem than you might think. Most people wrote programs that were intended to behave as if bindings were lexical anyway. Taking advantage of dynamic bindings was exceptional.
5:41:07
beach
So whether such a program ran in the interpreter or in the compiler did not make a difference.
5:44:52
beach
Interestingly, Franz Lisp (a predecessor of Allegro Common Lisp in a way) went to a lot of trouble to make compiled code use dynamic bindings. At the time, dynamic bindings were thought to be the norm. I think this is where Scheme showed the way, and inspired Common Lisp to use lexical bindings everywhere.
5:47:37
edgar-rft
madrik: https://en.wikipedia.org/wiki/Macro_(computer_science)#Early_Lisp_macros says "In 1963, Timothy Hart proposed adding macros to Lisp 1.5 in AI Memo 57: MACRO Definitions for LISP." with link to the original document. I have no idea if that is true bcause I wasn't even born at that time :-)
5:51:00
madrik
Out of curiosity, I know that popular Lisp systems currently feature a compiler as given, with an optional interpreter. Are there any systems with _only_ a Common Lisp interpreter?
5:53:57
edgar-rft
madrik: https://almy.us/xlisp.html is the only one I know, but it's not a full implementation of Common Lisp
11:48:38
p_l
madrik: some systems can be run with just evaluator, but Common Lisp requires "minimal compilation" (expansion of macros etc.)
11:49:11
p_l
technically some implementations skirt this literally but preserve the required semantics, like LW which uses evaluator when tracing macros
13:39:41
beach
no-defun-allowed: The default would be to create a method like (defmethod some-reader ((x some-class)) (slot-value x 'the-slot-name)), but there are ways of making it faster. When the effective method is created, it is often possible to use standard-instance-access instead, which is much faster.