Terry Reedy <tjre...@udel.edu>:

> On 10/17/2017 1:07 AM, Steve D'Aprano wrote:
>> -- unless the interpreter
>   made del a special case, not a regular function.
>
> This is what Lisp does. Most functions are 'normal': unquoted argument
> expressions are evaluated. Some are 'special': at least one of the
> argument expressions is automatically quoted or treated specially is
> some way. Users have to memorize which functions are special and which
> arguments are automatically quoted. Learning the exceptions and
> quoting rules was for me a barrier to learning Lisp.

Yes, Lisp (including Scheme) has three kinds of forms:

   functions:
      Argument forms are evaluated before passed on to the "callable".
      The result is returned as is.

   macros (syntactic forms):
      Argument forms are passed on to the callable without evaluation.
      The result is evaluated and then returned.

   special forms:
      Argument forms are passed on to the callable without evaluation.
      The result is returned as is.


The biggest ugly spot in the arrangement is that while functions are
first-class objects in Lisp, macros and special forms are not. (There
are dialects, though, where they all are first class.)


Marko
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to