TODO: Things like %app? Also, the explanations of scope sets and phases are not especially useful unless you already have some familiarity with the subject.
Date: Monday, 8 March 1982 11:31-EST
From: Jonathan Rees <Rees at YALE>
To: Mcdermott at YALE
Cc: Riesbeck at YALE, Alan at MIT-MC, Kmp at MIT-MC
Subject: Quasi-Quote
I forwarded your little report to Alan Bawden and Kent Pitman at MC... if anyone has opinions, they do, and perhaps they can defend Maclisp's world view (which seems poorly represented) better than I...
| (* https://dl.acm.org/doi/10.1145/3720507 *) | |
| module Syntax = struct | |
| type id = string | |
| type producer_id = id | |
| type consumer_id = id | |
| type constructor_id = id | |
| type deconstructor_id = id | |
| type type_id = id |
| \documentclass{article} | |
| \usepackage{amsmath} | |
| \usepackage{amssymb} | |
| \usepackage{simplebnf} | |
| \def\colon{:} | |
| \def\tyvar{\alpha} | |
| \def\clsname{C} | |
| \def\method{m} |
| # 1.2.1. Metaproduction rules of modes | |
| (A) MODE :: PLAIN ; STOWED ; REF to MODE ; PROCEDURE ; UNITED ; MU definition of MODE ; MU application. | |
| (B) PLAIN :: INTREAL ; boolean ; character. | |
| (C) INTREAL :: SIZETY integral ; SIZETY real. | |
| (D) SIZETY :: long LONGSETY ; short SHORTSETY ; EMPTY. | |
| (E) LONGSETY :: long LONGSETY ; EMPTY. | |
| (F) SHORTSETY :: short SHORTSETY ; EMPTY. | |
| (G) EMPTY :: . | |
| (H) STOWED :: structured with FIELDS mode ; FLEXETY ROWS of MODE. | |
| (I) FIELDS :: FIELD ; FIELDS FIELD. |
Lisp, thanks to Scheme, is often associated with functional programming. However, as David Turner points out,
McCarthy (1978) records that LISP had assignment and
gotobefore it had conditional expressions and recursion—it started as a version of FORTRAN I to which these latter were added.LISP was not based on the lambda calculus, despite using the word “LAMBDA” to denote functions. At the time he invented LISP, McCarthy was aware of (Church 1941) but had not studied it. The theoretical model behind LISP was Kleene's theory of first order recursive functions [according a talk McCarthy gave, heard by Turner].
| #lang racket | |
| (struct Constant (value)) | |
| (struct Variable (name)) | |
| (struct Apply (function argument)) | |
| (struct Lambda (variable body)) | |
| (struct If (test then else)) | |
| (struct Reset (body)) | |
| (struct Shift (variable body)) | |
| (struct Call-With-Current-Continuation (function)) |
| (defpackage :LISP-1.5-compiler | |
| (:use :Common-Lisp) | |
| (:shadow :length ; defined by the compiler | |
| :reverse ; defined by the compiler | |
| :member ; defined by the compiler | |
| :map ; like mapl, and function is first argument | |
| :exp ; used as special variable in the compiler | |
| :compile ; defined by the compiler | |
| :maplist ; takes function first | |
| :mapcon ; takes function first |
| LINE HAS BEEN TRUNCATED TO 72 COLUMNS | |
| LINE HAS BEEN TRUNCATED TO 72 COLUMNS | |
| ←Entry: MAIN→ | |
| ↓ | |
| ↓ | |
| ↓ | |
| ↓ | |
| __________________________________________________________________________ |
| (defconstant character-patterns | |
| (quote ((#\Newline . #*000000000000) | |
| (#\Space . #*000000000000) | |
| (#\0 . #*001000000000) | |
| (#\1 . #*000100000000) | |
| (#\2 . #*000010000000) | |
| (#\3 . #*000001000000) | |
| (#\4 . #*000000100000) | |
| (#\5 . #*000000010000) | |
| (#\6 . #*000000001000) |