我發現自己定義與除了自己的名字相同的定義語法參數,所以我決定寫一個宏,使這個簡單的:定義多個頂級表單的球拍宏?
(define-syntax (test-case-parameter stx)
(syntax-parse stx
[(_ parameter:id)
#'(define-syntax-parameter parameter
(lambda (stx)
(raise-syntax-error stx "Can only be used inside test-case.")))]))
(test-case-parameter a)
(test-case-parameter b)
(test-case-parameter c)
然而,而不必重複宏的名稱,我想能夠只寫:
(test-case-parameter a b c)
但我不明白如何使用正常的省略號語法要做到這一點,因爲我需要換一個begin
一切這將創建一個新的範疇,我希望所有的語法參數就好像我已經將它們寫入每個頂層一樣。什麼是正確的方式來實現這一目標?
那麼,答案是使用'begin'。 'begin'很奇怪,因爲它在頂級與表達式上下文中有兩種不同的行爲。在頂層,它具有你想要的這種宏的拼接行爲,但是在表達式上下文中有你所指的範圍行爲。 –