Re: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value

2012-12-01 Thread J. Ian Johnson
Thanks so much.
-Ian
- Original Message -
From: "Matthew Flatt" 
To: "J. Ian Johnson" 
Cc: "dev" 
Sent: Saturday, December 1, 2012 10:29:13 AM GMT -05:00 US/Canada Eastern
Subject: Re: [racket-dev] splicing-syntax-parameterize and 
syntax-parameter-value

Interesting problem. I almost gave up, but I think I've sorted it out
--- repair pushed.

At Thu, 29 Nov 2012 18:20:18 -0500 (EST), "J. Ian Johnson" wrote:
> Simpler example:
> 
> (require racket/splicing racket/stxparam)
> (define-syntax-parameter f #f)
> (define x 0)
> ;; 0
> (syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> ;; 0
> (splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> ;; error
> > (splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> stdin::334: f: bad syntax
>   in: f
>   context...:
>/home/ianj/racket/collects/racket/splicing.rkt:224:0
>/home/ianj/racket/collects/racket/splicing.rkt:177:0
>/home/ianj/racket/collects/racket/splicing.rkt:224:0
>/home/ianj/racket/collects/racket/splicing.rkt:177:0
>/home/ianj/racket/collects/racket/private/misc.rkt:87:7
> 
> -Ian
> ----- Original Message -
> From: "J. Ian Johnson" 
> To: "dev" 
> Sent: Thursday, November 29, 2012 4:01:09 PM GMT -05:00 US/Canada Eastern
> Subject: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value
> 
> (require racket/stxparam racket/splicing)
> (define-syntax-parameter f #f)
> (splicing-syntax-parameterize ([f #t])
>   (begin-for-syntax (printf "~a~%" (syntax-parameter-value #'f)))
>   (void))
> 
> This prints #f.
> 
> If I instead add a macro indirection
> 
> (define-syntax (blah stx) (syntax-case stx () [(_ f) (printf "~a~%" 
> (syntax-parameter-value #'f)) #'(void)]))
> 
> Then
> 
> (splicing-syntax-parameterize ([f #t])
>   (blah f)
>   (void))
> 
> prints #t
> 
> This is messing up some of my syntax parameters that build their definitions 
> from the existing value in the parameter. Why does the first program have 
> this 
> behavior? This feels bug-like to me.
> -Ian

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value

2012-12-01 Thread Matthew Flatt
Interesting problem. I almost gave up, but I think I've sorted it out
--- repair pushed.

At Thu, 29 Nov 2012 18:20:18 -0500 (EST), "J. Ian Johnson" wrote:
> Simpler example:
> 
> (require racket/splicing racket/stxparam)
> (define-syntax-parameter f #f)
> (define x 0)
> ;; 0
> (syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> ;; 0
> (splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> ;; error
> > (splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
> stdin::334: f: bad syntax
>   in: f
>   context...:
>/home/ianj/racket/collects/racket/splicing.rkt:224:0
>/home/ianj/racket/collects/racket/splicing.rkt:177:0
>/home/ianj/racket/collects/racket/splicing.rkt:224:0
>/home/ianj/racket/collects/racket/splicing.rkt:177:0
>/home/ianj/racket/collects/racket/private/misc.rkt:87:7
> 
> -Ian
> - Original Message -
> From: "J. Ian Johnson" 
> To: "dev" 
> Sent: Thursday, November 29, 2012 4:01:09 PM GMT -05:00 US/Canada Eastern
> Subject: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value
> 
> (require racket/stxparam racket/splicing)
> (define-syntax-parameter f #f)
> (splicing-syntax-parameterize ([f #t])
>   (begin-for-syntax (printf "~a~%" (syntax-parameter-value #'f)))
>   (void))
> 
> This prints #f.
> 
> If I instead add a macro indirection
> 
> (define-syntax (blah stx) (syntax-case stx () [(_ f) (printf "~a~%" 
> (syntax-parameter-value #'f)) #'(void)]))
> 
> Then
> 
> (splicing-syntax-parameterize ([f #t])
>   (blah f)
>   (void))
> 
> prints #t
> 
> This is messing up some of my syntax parameters that build their definitions 
> from the existing value in the parameter. Why does the first program have 
> this 
> behavior? This feels bug-like to me.
> -Ian

_
  Racket Developers list:
  http://lists.racket-lang.org/dev


Re: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value

2012-11-29 Thread J. Ian Johnson
Simpler example:

(require racket/splicing racket/stxparam)
(define-syntax-parameter f #f)
(define x 0)
;; 0
(syntax-parameterize ([f (make-rename-transformer #'x)]) 
(splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
;; 0
(splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
(syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
;; error
> (splicing-syntax-parameterize ([f (make-rename-transformer #'x)]) 
> (splicing-syntax-parameterize ([f (syntax-parameter-value #'f)]) f))
stdin::334: f: bad syntax
  in: f
  context...:
   /home/ianj/racket/collects/racket/splicing.rkt:224:0
   /home/ianj/racket/collects/racket/splicing.rkt:177:0
   /home/ianj/racket/collects/racket/splicing.rkt:224:0
   /home/ianj/racket/collects/racket/splicing.rkt:177:0
   /home/ianj/racket/collects/racket/private/misc.rkt:87:7

-Ian
- Original Message -
From: "J. Ian Johnson" 
To: "dev" 
Sent: Thursday, November 29, 2012 4:01:09 PM GMT -05:00 US/Canada Eastern
Subject: [racket-dev] splicing-syntax-parameterize and syntax-parameter-value

(require racket/stxparam racket/splicing)
(define-syntax-parameter f #f)
(splicing-syntax-parameterize ([f #t])
  (begin-for-syntax (printf "~a~%" (syntax-parameter-value #'f)))
  (void))

This prints #f.

If I instead add a macro indirection

(define-syntax (blah stx) (syntax-case stx () [(_ f) (printf "~a~%" 
(syntax-parameter-value #'f)) #'(void)]))

Then

(splicing-syntax-parameterize ([f #t])
  (blah f)
  (void))

prints #t

This is messing up some of my syntax parameters that build their definitions 
from the existing value in the parameter. Why does the first program have this 
behavior? This feels bug-like to me.
-Ian
_
  Racket Developers list:
  http://lists.racket-lang.org/dev
_
  Racket Developers list:
  http://lists.racket-lang.org/dev


[racket-dev] splicing-syntax-parameterize and syntax-parameter-value

2012-11-29 Thread J. Ian Johnson
(require racket/stxparam racket/splicing)
(define-syntax-parameter f #f)
(splicing-syntax-parameterize ([f #t])
  (begin-for-syntax (printf "~a~%" (syntax-parameter-value #'f)))
  (void))

This prints #f.

If I instead add a macro indirection

(define-syntax (blah stx) (syntax-case stx () [(_ f) (printf "~a~%" 
(syntax-parameter-value #'f)) #'(void)]))

Then

(splicing-syntax-parameterize ([f #t])
  (blah f)
  (void))

prints #t

This is messing up some of my syntax parameters that build their definitions 
from the existing value in the parameter. Why does the first program have this 
behavior? This feels bug-like to me.
-Ian
_
  Racket Developers list:
  http://lists.racket-lang.org/dev