Mi piacerebbe creare un modulo sintattico in Racket che possa accettare un argomento di parole chiave, come alcune funzioni possono.Le macro di Racket possono assumere argomenti di parole chiave?
aver ridotto ad un semplice esempio, ho provato a scrivere:
(define-syntax sum-of-products
(syntax-rules (#:extra)
[(sum-of-products ([a b] ...))
(+ (* a b) ...)]
[(sum-of-products ([a b] ...) #:extra extra)
(+ extra (* a b) ...)]))
tale che la seguente sarebbe poi lavorare:
(sum-of-products ([2 2] [3 3])) → 13
(sum-of-products ([2 2] [3 3]) #:extra 5) → 18
Purtroppo, Racket chiama questo "cattivo sintassi", quindi ovviamente quel tentativo non era corretto.
Questo può essere fatto?
In particolare, la documentazione 'syntax-parse' ha un'intera [sezione] (http://docs.racket-lang.org/syntax/Optional_Keyword_Arguments.html) sulla scrittura di macro con argomenti di parole chiave. –
(Ugh, ho dimenticato di aggiungere quel link ...) –