On Jan 14, 2008 10:31 AM, James G. Sack (jim) <[EMAIL PROTECTED]> wrote:
> David Brown wrote: > >.. > > The simple rule in scheme is that a form consists of > > > > - A number, string, and some other things: evalutes to itself. > > - A symbol: It is looked up via various rules to get a value. > > - A list of forms in parens: The first form must evaluate to a > function > > which is called (applied) to the given arguments. This is a > function > > call. > > - Some other things we'll get to later. > > > > Notice that the definition is recursive. Each of the things in the > parens > > is another form. > > > > In scheme, there is nothing special about the first term in a function > > call expression. It is often a symbol that comes from the global symbol > > table, but it doesn't have to be. It could be a locally defined symbol, > or > > even another expression in parens that computes a function. > > > >> ** Also, what is the type of "define"? You cannot evaluate "define" > >> so it > >> can't be a regular function. > >> > >> 1 ]=> define > > > > Notice that the rules above always look up symbols when they are > > encountered. We need to have some way to define new symbols, or our > > program couldn't be more than one (possibly large) expression based on > > existing definitions. > > > > Hence, special forms (pardon my lisp terminology if Scheme uses > different > > names for these things). 'define' is special in that it doesn't > evaluate > > it's arguments. Instead, it looks at them unevaluated and uses that to > > make a definition. Depending on what the first argument looks like, it > > might create a function definition, or it might evaluate the second > > argument. > > > > Macros are how the user can create definitions. I don't think Macros > are > > covered in SICP. But, the Scheme implementer had to create some of > these > > or we would never get anywhere. > > > > Another very useful special form is "quote". What if I don't want to > > evaluate an expression. I can use the quote special form to not > evaluate > > it: > > > > > (quote (+ 1 2)) > > (+ 1 2) > > > > This is used often enough, that there is a special shortcut. The above > is > > equivalent to: > > > > > '(+ 1 2) > > (+ 1 2) > > Nice summary, Dave. Maybe you could post this somewhere. I've forgotten, > did Mark set up some kind of wiki gathering spot? Mark? > > (kplug wiki is certainly available for such things.) > > Regards, > ..jim > > -- > [email protected] > http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg > Yes I have! http://www.kernel-panic.org/Members/schoonm/sicp -- Mark Schoonover, CMDBA http://www.linkedin.com/in/markschoonover http://marksitblog.blogspot.com [EMAIL PROTECTED] -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
