[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-hackers] extending define-values
From: |
Felix |
Subject: |
Re: [Chicken-hackers] extending define-values |
Date: |
Tue, 09 Apr 2013 06:28:05 +0200 (CEST) |
From: Alex Shinn <address@hidden>
Subject: Re: [Chicken-hackers] extending define-values
Date: Tue, 9 Apr 2013 08:29:38 +0900
> On Tue, Apr 9, 2013 at 8:16 AM, Alex Shinn <address@hidden> wrote:
>
>> On Tue, Apr 9, 2013 at 6:49 AM, Felix <
>> address@hidden> wrote:
>>
>>> >> "define-values" can not simply expand into a bunch of "defines".
>>> >> To allow it to be intermixed with "define" in internal definitions,
>>> >> it needs be special cased, due to the use of "call-with-values" (which
>>> >> would "break" the sequence of definitions and treat all following
>>> >> forms of the body as non-definitions). Or not?
>>> >
>>> > No, the call to call-with-values is wrapped in a definition too.
>>> > It really is turtles all the way down.
>>> >
>>> >> BTW, where can I find the portable reference implementation you
>>> >> mentioned?
>>> >
>>> > In Section 7.3 of the ninth draft, pp. 69-70. Unfortunately,
>>> > trac.sacrideo.us seems to be down, but it's normally at
>>> > <
>>> http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs-draft-9.pdf
>>> >.
>>> > There's a temporary copy at <
>>> http://www.ccil.org/~cowan/temp/r7rs-draft-9.pdf>.
>>>
>>> Very clever, indeed. Thanks for the link. Rather inefficient,
>>> but clever.
>>>
>>
>> Sorry, what I described was a variation of the same theme.
>> If you do what I described instead of what I coded, and be
>> sure to pass a lambda with the same signature (in temp vars)
>> as the define-values to call-with-values then there is zero
>> overhead.
>>
>
> Note the following implementation from 2007 follows this approach:
>
> http://permalink.gmane.org/gmane.lisp.scheme.gauche/1051
This requires letrec* semantics for internal definitions and is not
valid in R5RS. So I'm not sure this is relevant to the discussion. It
might work in chicken (which uses letrec* semantics anyway), but it
still is invalid code. To allow checking for such cases statically and
for possible later optimizations it is better to avoid doing this.
cheers,
felix
- Re: [Chicken-hackers] extending define-values, (continued)
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/06
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/07
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/07
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/08
- Re: [Chicken-hackers] extending define-values, John Cowan, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/08
- Re: [Chicken-hackers] extending define-values,
Felix <=
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/09
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/09
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/09
- Re: [Chicken-hackers] extending define-values, Alex Shinn, 2013/04/08
- Re: [Chicken-hackers] extending define-values, Felix, 2013/04/08
Re: [Chicken-hackers] extending define-values, John Cowan, 2013/04/05