LINUX.ORG.RU

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

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

В общем случае (для любой Scheme)

(define-syntax (some-shit stx)
 (syntax-case (stx)
 [(some-shit a b)
  #`((lambda() 
    (define #,(datum->syntax stx 'proc1) "ok")
    (define #,(datum->syntax stx 'proc2) "ok2")
    (a b)))]))

Или (для Racket)

(define-syntax (some-shit stx)
 (syntax-case (stx)
 [(some-shit a b)
  (with-syntax ([proc1 (syntax-local-introduce #'proc1)]
                [proc2 (syntax-local-introduce #'proc2)])
    #`((lambda() 
      (define proc1 "ok")
      (define proc2 "ok2")
      (a b))))])

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

В общем случае (для любой Scheme)

(define-syntax (some-shit stx)
 (syntax-case (stx)
 [(some-shit a b)
  #`((lambda() 
    (define #,(datum->syntax stx 'proc1) "ok")
    (define #,(datum->syntax stx 'proc2) "ok2")
    (a b)))]))

Или (для Racket)

(define-syntax (some-shit stx)
 (syntax-case (stx)
 [(some-shit a b)
  (with-syntax ([proc1 (syntax-local-introdice #'proc1)]
                [proc2 (syntax-local-introdice #'proc2)])
    #`((lambda() 
      (define proc1 "ok")
      (define proc2 "ok2")
      (a b))))])