LISP
Anatomy of LISP
Artificial Intelligence Programming
Artificial Intelligence Programming
Rabbit: A Compiler for Scheme
LISP 1.5 Programmer's Manual
Lisp machine manual
Revised report on the algorithmic language scheme
ACM SIGPLAN Notices
Sometimes an FEXPR is better than a macro
ACM SIGART Bulletin
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
M-LISP: its natural semantics and equational logic
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
M-LISP: a representation-independent dialect of LISP with reduction semantics
ACM Transactions on Programming Languages and Systems (TOPLAS)
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Macroexpand-All: an example of a simple lisp code walker
ACM SIGPLAN Lisp Pointers
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Template meta-programming for Haskell
ACM SIGPLAN Notices
Programming the Web with High-Level Programming Languages
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
T: a dialect of Lisp or LAMBDA: The ultimate software tool
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
DrScheme: a programming environment for Scheme
Journal of Functional Programming
History of programming languages---II
Implementation and use of the PLT scheme Web server
Higher-Order and Symbolic Computation
Self-Sustaining Systems
Hi-index | 0.00 |
Special forms are those expressions in the Lisp language which do not follow normal rules for evaluation. Some such forms are necessary as primitives of the language, while others may be desirable in order to improve readability, control the evaluation environment, implement abstraction and modularity, affect the flow of control, allow extended scoping mechanisms, define functions which accept a variable number of arguments, or achieve greater efficiency. There exist several long-standing mechanisms for specifying the definition of special forms: FEXPR's, NLAMBDA's and MACRO's. In this paper, the motivations for using special forms are discussed, followed by a summary of the advantages and disadvantages of employing MACRO's, FEXPR's, and NLAMBDA's as tools for their implementation. It is asserted that MACRO's offer an adequate mechanism for specifying special form definitions and that FEXPR's do not. Evidence is given which supports the author's contention that FEXPR's interfere with the correct operation of code-analyzing programs such as the compiler. Finally, it is suggested that, in the design of future Lisp dialects, serious consideration be given to the proposition that FEXPR's should be omitted from the language altogether.