Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!fs7.ece.cmu.edu!hudson.lm.com!godot.cc.duq.edu!news.duke.edu!news.mathworks.com!news.alpha.net!uwm.edu!math.ohio-state.edu!magnus.acs.ohio-state.edu!csn!gw1.att.com!nntpa!nntpa.cb.att.com!lgm
From: lgm@polaris.ih.att.com (Lawrence G. Mayka)
Subject: Re: SETQ is to SET as LET is to ???
In-Reply-To: gadbois@cs.utexas.edu's message of 16 Nov 1994 18:32:28 -0600
Message-ID: <LGM.94Nov17075742@polaris.ih.att.com>
Sender: news@nntpa.cb.att.com (Netnews Administration)
Nntp-Posting-Host: polaris.ih.att.com
Organization: AT&T Bell Laboratories, Naperville, Illinois, USA
References: <3abiei$33o@Radon.Stanford.EDU> <DAVIS.94Nov16111714@passy.ilog.fr>
	<3adus3$44q@nz12.rz.uni-karlsruhe.de>
	<3ae8as$p13@peaches.cs.utexas.edu>
Date: Thu, 17 Nov 1994 13:57:42 GMT
Lines: 25

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.

I now wish we had a standardized, thread-safe LETF.  A thread-safe
LETF would simplify, and improve the performance of, some
uncomfortable concurrency situations.  I'd even settle for a SLOT-LET
that applied only to CLOS instance slots.
--
        Lawrence G. Mayka
        AT&T Bell Laboratories
        lgm@ieain.att.com

Standard disclaimer.
