Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!howland.reston.ans.net!swrinde!pipex!uknet!festival!edcogsci!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Subject: Re: SETQ is to SET as LET is to ???
Message-ID: <CzFG78.5Hu@cogsci.ed.ac.uk>
Keywords: lisp, common lisp, progv, let, unwind-protect, special form
Sender: usenet@cogsci.ed.ac.uk (C News Software)
Nntp-Posting-Host: bute-alter.aiai.ed.ac.uk
Organization: AIAI, University of Edinburgh, Scotland
References: <DAVIS.94Nov16111714@passy.ilog.fr> <3adus3$44q@nz12.rz.uni-karlsruhe.de> <3ae8as$p13@peaches.cs.utexas.edu>
Date: Thu, 17 Nov 1994 19:45:07 GMT
Lines: 20

In article <3ae8as$p13@peaches.cs.utexas.edu> gadbois@cs.utexas.edu (David Gadbois) writes:
>Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de> wrote:
>>This raises the question why PROGV was made a special form, not a
>>macro, in CLtL. It is certainly not very frequently used, certainly
>>less than MULTIPLE-VALUE-BIND - which is a macro.
>
>PROGV makes new dynamic bindings, which is required for "thread safe"
>code; the version you gave in terms of UNWIND-PROTECT can stomp on
>other threads' bindings.  Threads have not made it into the language,
>but enough implementations support them that it is worthwhile to have
>PROGV defined as a special form ("special operator" in ANS CL-speak.)
>PROGV is a special case of the LETF (make a dynamic "binding" on any
>SETF-able location) that some implementations support.

While I agree that the posted macro has problems and that PROGV
should be a special form, something can be a macro in CL without
any particular definition being given.  Moreover, such macros
can use implementation-specific functions (at least).

-- jeff
