LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Проверь, пожалуйста:

Не работает

> (expand-once '(dst id b c #:c-id cc))
dst: expected expression in: #:c-id

Именно то, что ты записал можно и стандартно сделать

(define-syntax (dst stx)
   (syntax-case stx ()
     [(dst id #:c-id c-id params ...) 
        #'(src d #:c-id c-id params ...)]
     [(dst id params ...)
        #`(src id params ... #:c-id #,(make-new-id id))]))

Исходная версия monk, :

Проверь, пожалуйста:

Не работает

> (expand-once '(dst id b c #:c-id cc))
dst: expected expression in: #:c-id

Именно то, что ты записал можно и стандартно сделать

(define-syntax (dst stx)
   (syntax-case stx ()
     [(dst id #:c-id c-id params ...) #'(src d #:c-id c-id params ...)]
     [(dst id params ...)
      (if (memq '#:c-id (syntax->datum #'(params ...)))
            #'(src id params ...)
            #`(src id params ... #:c-id #,(make-new-id id))))]))