Me gustaría crear una forma sintáctica en Racket que pueda aceptar un argumento de palabras clave, del modo en que lo hacen algunas funciones.¿Pueden las macros Racket tomar argumentos de palabra clave?
Después de haber reducido a un simple ejemplo, he intentado escribir:
(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) ...)]))
De tal manera que la siguiente sería entonces el trabajo:
(sum-of-products ([2 2] [3 3])) → 13
(sum-of-products ([2 2] [3 3]) #:extra 5) → 18
Desafortunadamente, Raqueta llama a esto "mala sintaxis", por lo que, obviamente, ese intento no fue correcto
¿Se puede hacer esto?
En particular, la documentación 'syntax-parse' tiene toda una [sección] (http://docs.racket-lang.org/syntax/Optional_Keyword_Arguments.html) al escribir macros con argumentos de palabra clave. –
(Uf, olvidé agregar ese enlace ...) –