[Sexpr-users] Small Subset of Lisp
Brought to you by:
matts22
From: MJ S. <mj...@ma...> - 2004-02-23 06:04:16
|
When I was talking about a small subset of Lisp in my last mail I was referring to McCarthy's original operators, which totaled 8 primitives. That is where my love for Lisp started. I don't know another language that can evaluate itself with only 8 operators defined. The list would be something like this. (quote a) returns a, and of course abbreviated as 'a (atom? 'a) returns true if a is an atom or empty list. Otherwise false is returned. (eq? 'a 'b) returns true if the values of a and b are the same atom or both are empty lists. false is returned otherwise. (car x) where x is a list and returns the first element (cdr x) where x is a list and returns everything but the first element These could also be written as destructive operators car! and cdr! in which there is no copy of the list made. (cons x y) where y is a list and returns a list containing the value of x followed by the elements of y (cond (test expr) ... (test2 expr2)) and finally fn should replace the canonical lambda. I agree with Paul Graham, if Alonzo Church had to write lambda for every calculus expression he worked on he would have chosen something different. I am torn as to accomplish the labeling of functions. In my head, binding and identifer to a lambda expression should be accomplished the same way that an identifier is bound to a value with let, and recursively with rlet. But this is where my knowledge is lacking, because there has to be a very good reason for choosing to different operators for defining variables and naming functions. I am just not sure as to what they are. I have also been thinking recently that since, in Lisp, functions and data are treated the same, and are both first class. So my head has been wondering on the area of first class macro's. Once again I am not sure of the implementation problems this may propose, but in my current train of though, macro's are still functions that return data (period, end of story) so why should they be treated any differently. ------------------------------------------------------------------------ -------- M. J. Stahl "I must create a system, or be enslaved by another man's." -- William Blake |