Другими словами, вы решили, что for
действительно нужен только один шаблон и хотите написать что-то вроде:
(defmacro (for ,i from ,x to ,y step ,body)
; code goes here
)
В Scheme нет ничего встроенного, что ускоряет запись макросов с одним шаблоном. Традиционным решением является (сюрприз!) Написать еще один макрос.
Я использовал defsubst
от Swindle , и PLT Scheme теперь поставляется с define-syntax-rule
, что делает то же самое. Если вы изучаете макросы, то написание собственного define-syntax-rule
эквивалента было бы хорошим упражнением, особенно если вы хотите каким-то образом указывать ключевые слова, такие как «for» и «from». Ни defsubst
, ни define-syntax-rule
не могут их обработать.