next up previous
Next: References Up: LISP-NOTES ON ITS Previous: Proving Correctness of LISP

Mysteries and other Matters

  1. Daniel Friedman and David Wise have argued that cons should not evaluate its arguments and have shown that this allows certain infinite list structures to be regarded as objects. Trouble is avoided, because only as much of the infinite structure is created as is necessary to get the answers to be printed. Exactly what domain of infinite list structures is assumed is unclear to me. While they give interesting examples of applications, it isn't clear whether the proposed extension has practical value.
  2. Many people have proposed implementations of full lambda calculus. This permits higher level functions, i.e. functions of functions of functions etc., but allows only manipulations based on composition and lambda conversions, not general manipulations of the symbolic form of functions. While conditional expressions are not directly provided, they can be imitated by writing (as proposed by Dana Scott in an unpublished note) true as tex2html_wrap_inline124 , false as tex2html_wrap_inline126 and tex2html_wrap_inline128 as p(a)(b). Another neat idea of Scott's (improved from one of Church) is to identify the natural number n with the operation of taking the (n+1)th element of a list. The mystery is whether extension to lambda calculus has any practical significance, and the current best guess is no, although the Scott's notational idea suggests changing the notation of LISP and writing 0 for car, 1 for cadr, 2 for caddr, etc.
  3. Pure LISP would be much simpler conceptually if all list structure were represented uniquely in memory. This can be done using a hash cons, but then rplaca and friends don't work. Can't we somehow have the best of both worlds?
  4. It seems to me that LISP will probably be superseded for many purposes by a language that does to LISP what LISP does to machine language. Namely it will be a higher level language than LISP that, like LISP and machine language, can refer to its own programs. (However, a higher level language than LISP might have such a large declarative component that its texts may not correspond to programs. If what replaces the interpreter is smart enough, then the text written by a user will be more like a declarative description of the facts about a goal and the means available for attaining it than a program per se).gif

    An immediate problem is that both the kinds of abstract syntax presently available and present pattern matching systems are awkward for manipulating expressions containing bound variables.


next up previous
Next: References Up: LISP-NOTES ON ITS Previous: Proving Correctness of LISP

John McCarthy
Mon Mar 22 17:10:06 PST 1999