[英]Unquoting in Nested Macros in Racket
The language is #lang web-server/insta
and this code will be generated inside a quasiquoted argument passed to response/xexpr
语言是
#lang web-server/insta
,此代码将在传递给response/xexpr
的准引用参数内生成
-> (define home 'home-page)
-> (make-navigation home "home-page")
Note the ` backquote before ((href , (embed/url ...
注意
((href , (embed/url ...
'(p ((id "home-page")) (a `((href ,(embed/url home-page))) "home-page"))
Note that the ` is gone. 请注意`已消失。
'(p ((id "home-page")) (a ((href ,(embed/url home-page))) "home-page"))
(define (make-navigation uri label)
(define (make-id uri)
`((id ,(symbol->string uri))))
(define-syntax-rule (embed uri)
``((href ,(embed/url ,uri))))
`(p ,(make-id uri)
(a ,(embed uri)
,label)))
The issue is probably with embed
. 问题可能与
embed
。
#lang racket
(define (make-navigation uri label)
(define (make-id uri)
`((id ,(symbol->string uri))))
(define-syntax-rule (embed uri)
'((href ,(embed/url uri))))
`(p ,(make-id uri)
(a ,(embed uri)
,label)))
(define home 'home-page)
(make-navigation home "home-page")
Output: 输出:
'(p ((id "home-page")) (a ((href ,(embed/url uri))) "home-page"))
UPDATE 更新
(define (make-navigation uri label)
(define (make-id uri)
`((id ,(symbol->string uri))))
(define-syntax-rule (embed uri)
`((href ,(list 'unquote (list 'embed/url uri)))))
`(p ,(make-id uri)
(a ,(embed uri)
,label)))
(define home 'home-page)
(make-navigation home "home-page")
Output: 输出:
'(p ((id "home-page")) (a ((href ,(embed/url home-page))) "home-page"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.