Re: [Scheme-reports] Formal definitions [con'd] Alex Shinn (01 Dec 2012 04:02 UTC)
Re: [Scheme-reports] Formal definitions [con'd] Jean-Michel HUFFLEN (03 Dec 2012 21:40 UTC)

Re: [Scheme-reports] Formal definitions [con'd] Jean-Michel HUFFLEN 03 Dec 2012 21:40 UTC

Alex Shinn <alexshinn@gmail.com> wrote:

> On Fri, Nov 30, 2012 at 8:29 AM, Jean-Michel HUFFLEN
> <jmhuffle@femto-st.fr>wrote:
> (...)
>> - p. 70, "define-values"; the 1st clause
>>
>> ((define-values () expr) ...)
>>
>> seems to me to be useless, "define-values" cannot be used with an
>> empty list of variables, and no recursive call yields this situation;
>>
>
> It's unlikely you would intentionally do this, but it is allowed
> by the specification - define-values can take any formals list,
> including an empty list.

    OK, but I have two questions. In such a case:

(define-values () expr)

we could consider that "expr" is produced, but not consummated by any
variable. In other words, an expansion could be:

(call-with-values (lambda () expr)
   (lambda args (if #f #f)))

    Second question: if the expansion is:

(define dummy
   (call-with-values (lambda () expr)
     (lambda args #f)))

let us consider the two following expressions:

(let ()
   (define dummy '*something*)
   (define-values () '*another-thing*)
   dummy)

(let ()
   (define-values () '*something*)
   (define dummy another-thing*)
   dummy)

and let us recall that in such a case, all the variables introduced by
means of "local" "define" must be pairwise-different. In the first
case, that works because  Scheme macros are hygienic and the variable
"dummy" introduced by "define-values"' expansion is renamed. But what
about the second? When the "define-values" macro is expanded, "dummy"
is not known within the environment, is it? Or am I missing something?

    Cheers,

J.-M.

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports