Макросы схемы обучения. Помогите мне написать определение-синтаксис-правило - PullRequest
3 голосов
/ 01 октября 2009

Я новичок в Scheme Macros. Если у меня есть только один шаблон и я хочу объединить define-syntax и syntax-rules, как мне это сделать?

(define-syntax for
  (syntax-rules (from to)
    [(for i from x to y step body) ...]
    [(for i from x to y body) ...]))

Если у меня есть только один, как мне объединить определение синтаксиса и правило?

Спасибо.

1 Ответ

4 голосов
/ 01 октября 2009

Другими словами, вы решили, что 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 не могут их обработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...