Re: [racket-dev] Fwd: Q. about "Directly Reflective" paper
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
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
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