Re: [racket-dev] Fwd: Q. about "Directly Reflective" paper

2010-11-17 Thread Shriram Krishnamurthi
Someone should write to Danvy and ask him what the heck HE was doing
sleeping on the job.  How could a paper on a topic like this not get a
proper Schemer as a reviewer and, if so, why didn't they, uh, read the
paper?

On Wed, Nov 17, 2010 at 12:41 AM, John Clements
 wrote:
> Well, he's generous about it; here's what he had to say.
> John
>
> Begin forwarded message:
>
> From: Aaron Stump 
> Date: November 16, 2010 5:58:42 PM PST
> To: John Clements 
> Subject: Re: Q. about "Directly Reflective" paper
> Reply-To: ast...@cs.uiowa.edu
>
> Hi, John.
>
> I think you are right about this.  Lambda abstractions evaluate to
> #procedures in Scheme R5RS, and so it is not possible to take a cdr or car
> of one of these.  I have no idea why I wrote this (four years ago -- there
> was a major lag between acceptance and publication at HOSC).  I will add a
> note to my web page about this, and possibly upload a revised version of the
> paper without this incorrect statement.
> Aaron
> On Tue, Nov 16, 2010 at 4:18 PM, John Clements 
> wrote:
>>
>> I'm reading your paper, "Directly Reflective Meta-Programming," and I got
>> stuck early on a remark of yours about Scheme:
>>
>> > A meta-programming language is scope safe (or hygienic) iff variables
>> > may not be captured or escape their scopes during computation. Dynamic
>> > variables in Emacs LISP and Common LISP are a good example of a violation 
>> > of
>> > scope safety [30, 24]. Scheme R5RS’s macro language is designed to be scope
>> > safe [21]. Other constructs in Scheme R5RS, however, enable violation of
>> > scope safety, even though the language does not have dynamic variables. For
>> > a violation of scope safety in spirit, though not technically, we have that
>> > (caddr ’(lambda (x) x)) evaluates to x. According to the R5RS language
>> > definition, ’(lambda (x) x) is a literal expression, and hence the
>> > occurrences of x in it are not variables at all, but just (unscoped) 
>> > literal
>> > data. So in this example, a variable has been created (namely, the 
>> > resulting
>> > unquoted x), but not by means of removing it from its scope. Using
>> > quasiquotation, however, the example may be modified to give a true
>> > violation of scope safety. The following expression extracts the variable x
>> > from its scope, by transforming the binding lambda expression into a piece
>> > of literal data, and then extracting and evaluating the quoted variable.
>>
>> > ((lambda (y) (eval ‘(car (cdr (cdr ’,y) (lambda (x) x))
>>
>>
>> This looks pretty goofy to me.  Do you know of R5RS implementations that
>> actually allow you to peel apart a 3d value like this?  Racket (nee
>> MzScheme) certainly doesn't.
>>
>> Thanks!
>>
>>
>> John Clements
>>
>
>
>
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev
>
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Fwd: Q. about "Directly Reflective" paper

2010-11-17 Thread Robby Findler
IMO, this is what one should expect from someone when an error is
pointed out in their paper.

It is a bit surprising to me that something like that got thru at
HOSC, of all places, tho.

Robby

On Tue, Nov 16, 2010 at 11:41 PM, John Clements
 wrote:
> Well, he's generous about it; here's what he had to say.
> John
>
> Begin forwarded message:
>
> From: Aaron Stump 
> Date: November 16, 2010 5:58:42 PM PST
> To: John Clements 
> Subject: Re: Q. about "Directly Reflective" paper
> Reply-To: ast...@cs.uiowa.edu
>
> Hi, John.
>
> I think you are right about this.  Lambda abstractions evaluate to
> #procedures in Scheme R5RS, and so it is not possible to take a cdr or car
> of one of these.  I have no idea why I wrote this (four years ago -- there
> was a major lag between acceptance and publication at HOSC).  I will add a
> note to my web page about this, and possibly upload a revised version of the
> paper without this incorrect statement.
> Aaron
> On Tue, Nov 16, 2010 at 4:18 PM, John Clements 
> wrote:
>>
>> I'm reading your paper, "Directly Reflective Meta-Programming," and I got
>> stuck early on a remark of yours about Scheme:
>>
>> > A meta-programming language is scope safe (or hygienic) iff variables
>> > may not be captured or escape their scopes during computation. Dynamic
>> > variables in Emacs LISP and Common LISP are a good example of a violation 
>> > of
>> > scope safety [30, 24]. Scheme R5RS’s macro language is designed to be scope
>> > safe [21]. Other constructs in Scheme R5RS, however, enable violation of
>> > scope safety, even though the language does not have dynamic variables. For
>> > a violation of scope safety in spirit, though not technically, we have that
>> > (caddr ’(lambda (x) x)) evaluates to x. According to the R5RS language
>> > definition, ’(lambda (x) x) is a literal expression, and hence the
>> > occurrences of x in it are not variables at all, but just (unscoped) 
>> > literal
>> > data. So in this example, a variable has been created (namely, the 
>> > resulting
>> > unquoted x), but not by means of removing it from its scope. Using
>> > quasiquotation, however, the example may be modified to give a true
>> > violation of scope safety. The following expression extracts the variable x
>> > from its scope, by transforming the binding lambda expression into a piece
>> > of literal data, and then extracting and evaluating the quoted variable.
>>
>> > ((lambda (y) (eval ‘(car (cdr (cdr ’,y) (lambda (x) x))
>>
>>
>> This looks pretty goofy to me.  Do you know of R5RS implementations that
>> actually allow you to peel apart a 3d value like this?  Racket (nee
>> MzScheme) certainly doesn't.
>>
>> Thanks!
>>
>>
>> John Clements
>>
>
>
>
> _
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/dev
>
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

[racket-dev] Fwd: Q. about "Directly Reflective" paper

2010-11-16 Thread John Clements
Well, he's generous about it; here's what he had to say.

John


Begin forwarded message:

> From: Aaron Stump 
> Date: November 16, 2010 5:58:42 PM PST
> To: John Clements 
> Subject: Re: Q. about "Directly Reflective" paper
> Reply-To: ast...@cs.uiowa.edu
> 
> Hi, John.
> 
> I think you are right about this.  Lambda abstractions evaluate to 
> #procedures in Scheme R5RS, and so it is not possible to take a cdr or car of 
> one of these.  I have no idea why I wrote this (four years ago -- there was a 
> major lag between acceptance and publication at HOSC).  I will add a note to 
> my web page about this, and possibly upload a revised version of the paper 
> without this incorrect statement.
> 
> Aaron
> 
> On Tue, Nov 16, 2010 at 4:18 PM, John Clements  
> wrote:
> I'm reading your paper, "Directly Reflective Meta-Programming," and I got 
> stuck early on a remark of yours about Scheme:
> 
> > A meta-programming language is scope safe (or hygienic) iff variables may 
> > not be captured or escape their scopes during computation. Dynamic 
> > variables in Emacs LISP and Common LISP are a good example of a violation 
> > of scope safety [30, 24]. Scheme R5RS’s macro language is designed to be 
> > scope safe [21]. Other constructs in Scheme R5RS, however, enable violation 
> > of scope safety, even though the language does not have dynamic variables. 
> > For a violation of scope safety in spirit, though not technically, we have 
> > that (caddr ’(lambda (x) x)) evaluates to x. According to the R5RS language 
> > definition, ’(lambda (x) x) is a literal expression, and hence the 
> > occurrences of x in it are not variables at all, but just (unscoped) 
> > literal data. So in this example, a variable has been created (namely, the 
> > resulting unquoted x), but not by means of removing it from its scope. 
> > Using quasiquotation, however, the example may be modified to give a true 
> > violation of scope safety. The following expression extracts the variable x 
> > from its scope, by transforming the binding lambda expression into a piece 
> > of literal data, and then extracting and evaluating the quoted variable.
> 
> > ((lambda (y) (eval ‘(car (cdr (cdr ’,y) (lambda (x) x))
> 
> 
> This looks pretty goofy to me.  Do you know of R5RS implementations that 
> actually allow you to peel apart a 3d value like this?  Racket (nee MzScheme) 
> certainly doesn't.
> 
> Thanks!
> 
> 
> John Clements
> 
> 



smime.p7s
Description: S/MIME cryptographic signature
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev