[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Apply
- To: owens@cs.uchicago.edu
- Subject: Re: Apply
- From: bill@cambridge.apple.com (Bill St. Clair)
- Date: Wed, 12 Aug 1992 13:52:59 -0500
- Cc: info-mcl
>From: owens@cs.uchicago.edu
>Date: Wed, 12 Aug 92 11:59:16 CDT
>To: bill@cambridge.apple.com
>Subject: Re: Apply
>Newsgroups: comp.lang.lisp.mcl
>Organization: Dept of Computer Science, The Univ of Chicago
>Cc:
>
>In article <9208121537.AA03113@cambridge.apple.com> you write:
>
>>[...]
>>
>>(defun make-menu-items (items)
>> (let (menu-items)
>> (dolist (item items)
>> (push (make-instance ...
>> :attached-function
>> #'(lambda (window)
>> (declare (ignore window))
>> (print item)))
>> menu-items)
>> ...)))
>>
>
>
>Bill, I almost posted this exact code fragment, but then I thought of
>the buggy code that Rao posted the other day, and I couldn't remember
>whether dolist was guaranteed to create a fresh binding for each
>iteration. Does your code create an :attached-function that, for each
>of the menu items, prints the value taken on by ITEM during the last
>iteration of the DOLIST?
As pointed out by Kim Barrett and Bob Cassells, my code is wrong.
You need to create a fresh binding or use a mapping function.