help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: lisp question


From: Hadron
Subject: Re: lisp question
Date: Mon, 30 Apr 2007 01:06:04 +0200
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.99 (gnu/linux)

Barry Margolin <barmar@alum.mit.edu> writes:

> In article <871wi385na.fsf@gmail.com>, Hadron <hadronquark@gmail.com> 
> wrote:
>
>> from the lisp tutorial which comes with emacs 22:
>> 
>> ,----
>> | 1.8.3 Variable Number of Arguments
>> | ----------------------------------
>> | 
>> | Some functions, such as `concat', `+' or `*', take any number of
>> | arguments.  (The `*' is the symbol for multiplication.)  This can be
>> | seen by evaluating each of the following expressions in the usual way.
>> | What you will see in the echo area is printed in this text after `=>',
>> | which you may read as `evaluates to'.
>> | 
>> |    In the first set, the functions have no arguments:
>> | 
>> |      (+)       => 0
>> | 
>> |      (*)       => 1
>> | 
>> |    In this set, the functions have one argument each:
>> | 
>> |      (+ 3)     => 3
>> | 
>> |      (* 3)     => 3
>> | 
>> |    In this set, the functions have three arguments each:
>> | 
>> |      (+ 3 4 5) => 12
>> | 
>> |      (* 3 4 5) => 60
>> `----
>> 
>> It kind of glosses over sections (1) and (2).
>> 
>> Why do (*) and (* 3) evaluate to 1?
>
> (* 3) evaluates to 3, not 1.

Sorry, yes.

>
> With associative functions, calling them with no arguments returns the 
> identity value for that function.  This maintains the equivalence that
>
> (<fun> <arguments>) == (<fun> (<fun> <part1>) (<fun> <part2>))
>
> for any partitioning of the original arguments, including part1 or part2 
> being empty.  E.g.
>
> (* 3 4 5) = (* (* 3) (* 4 5)) = (* (*) (* 3 4 5))

All clear. Thanks.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]