cl-cont violates 11.1.2.1.2 part 19

13 views
Skip to first unread message

Zach Beane

unread,
Sep 27, 2010, 8:02:15 PM9/27/10
to weblocks
In section 11.1.2.1.2 (http://l1sp.org/cl/11.1.2.1.2), the CLHS says
that the consequences are undefined if a method is defined for a
standardized generic function that is applicable when all the
arguments are direct instances of standardized classes.

cl-cont's special-transformers.lisp has this:

(defmethod documentation :around ((obj symbol) (doc-type (eql
'function)))
(let ((fn (when (fboundp obj) (fdefinition obj))))
(if (typep fn 'funcallable/cc)
(documentation (f/cc-function fn) doc-type)
(call-next-method))))

Since that standard GF is specialized for symbols and functions,
LispWorks refuses to accept it with an error like this:

Error: Defining (METHOD DOCUMENTATION :AROUND (SYMBOL (EQL #)))
visible from package COMMON-LISP.

Because of that error, weblocks will not load on LispWorks. (LispWorks
is being picky; no other implementation I tried complained. But I
think the spec is clear about the situation and LispWorks is allowed
to signal an error.)

I removed that method (and the setf method), and weblocks loads and
runs fine on LispWorks.

Any chance that cl-cont will be updated to fix this issue?

Thanks,
Zach

Leslie P. Polzer

unread,
Sep 28, 2010, 4:12:55 AM9/28/10
to webl...@googlegroups.com
Zach Beane wrote:

> I removed that method (and the setf method), and weblocks loads and
> runs fine on LispWorks.
>
> Any chance that cl-cont will be updated to fix this issue?

Sure, fix committed to upstream. Thanks!

Leslie

Nico de Jager

unread,
Sep 28, 2010, 4:57:08 AM9/28/10
to webl...@googlegroups.com
Zach Beane <zbe...@gmail.com> writes:


Below is also a patch for LispWorks 4 & 5 from Martin Simmons against
cl-cont_0.3.7 which I never submitted (sorry). I don't use weblocks,
only cl-cont, and I never noticed that cl-cont was updated since the
0.3.7 release (which I am still using). Note that LispWorks 6 onward
don't need the patch. Maybe this is still useful for someone.

Nico


Martin Simmons <mar...@lispworks.com> writes:

>> Hi Nico,
>>
>> There are a small number of non-standard special operators in LispWorks that
>> code walkers have to handle.
>>
>> The one that causes problems in your example is
>> SYSTEM::MULTIPLE-VALUE-BIND-CALL, which is used by MULTIPLE-VALUE-BIND.
>>
>> I've attached a patch for LispWorks 6 Beta to fix that, which has loading form
>>
>> (load-one-private-patch "multiple-value-bind" :system)
>>
>> In addition, the following definition will fix cl-cont for previous releases
>> by processing it like MULTIPLE-VALUE-CALL.
>>
>> #+(or lispworks4 lispworks5)
>> (defcpstransformer system::multiple-value-bind-call (cons k-expr env)
>> "Transforms system::multiple-value-bind-call expression to CPS style."
>> (let ((fn (cadr cons))
>> (forms (cddr cons)))
>> (accum-mc-sequence->cps forms fn k-expr nil env)))
>>
>> Regards,
>>
>> Martin Simmons
>> LispWorks Technical Support
>> http://www.lispworks.com/support/
>>
>>
>>>>>>> On Sun, 20 Sep 2009 18:03:44 +0200, Nico de Jager said:
>>>
>>> Dear LispWorks support
>>>
>>> I need delimited continuations as provided by e.g. one of these two projects:
>>> cl-cont - http://common-lisp.net/project/cl-cont/
>>> arnesi - http://common-lisp.net/project/bese/docs/arnesi/html/Automatically_Converting_a_Subset_of_Common_Lisp_to_CPS.html
>>>
>>> cl-cont actually works with LispWorks as long as the code is not
>>> compiled. Below (**) is a simplified example of code that breaks when it
>>> is compiled. I did contact the maintainers of the project, but was
>>> referred back to LispWorks - see
>>> http://groups.google.co.za/group/weblocks/browse_frm/thread/f7dbf4eb5be1c267?hl=en
>>> for details. The problem may be related to insufficient information about
>>> COMPILER::INTERNAL-THE or other LispWorks specific special operators.
>>>
>>> Arnesi used to work with LispWorks 4.x but was broken in LispWorks
>>> 5.x. See the lisp-hug thread with subject
>>> "harlequin-common-lisp:augment-environment for LW 5.0?" for requests to
>>> add hcl:augment-environment back to get this working (Gmane is down for
>>> maintenance so I can't post the link to the thread).
>>>
>>> Can you please implement a fix or provide me with a quotation and
>>> timelines to implement a fix, to either:
>>> 1) get cl-cont to work with the current release of LispWorks,
>>> 2) get arnesi to work with the current release of LispWorks,
>>> 3) or provide a LispWorks specific alternative that supports delimited
>>> continuations to at least the level specified by cl-cont.
>>>
>>> Options 1 seems to be the least amount of work.
>>>
>>> If the fix is not free and I accept the quotation, the patches to the
>>> libraries or the extensions to LispWorks can be made available to the
>>> LispWorks community.
>>>
>>> I attach a version of cl-cont with other dependencies removed if you
>>> would like to run my example.
>>>
>>> Regards.
>>> Nico

Reply all
Reply to author
Forward
0 new messages