LINUX.ORG.RU

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

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

Вот упрощенный пример этой баги:

Файл «test.rkt»

#lang racket

(require syntax/stx)

(provide test)

(define (test stx)
  #`(begin #,@(stx-cdr stx) 1))

Следующий код не работает:

#lang racket

(require (for-syntax "test.rkt"))

(define-syntax (app-test stx)
  (test stx))

> (app-test (print 3))
. test.rkt:8:5: begin: unbound identifier;
 also, no #%app syntax transformer is bound
  context...:
  other binding...: in: begin

Вот что это за... Вот точно надо писать свой ракет, потому что нельзя делать ЯП вот так. На таком невозможно работать.

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

Вот упрощенный пример этой баги:

Файл «test.rkt»

#lang racket

(require syntax/stx)

(provide test)

(define (test stx)
  #`(begin #,@(stx-cdr stx) 1))

Следующий код не работает:

#lang racket

(require (for-syntax "test.rkt"))

(define-syntax (app-test stx)
  (test stx))

> (app-test (print 3))
. test.rkt:8:5: begin: unbound identifier;
 also, no #%app syntax transformer is bound
  context...:
  other binding...: in: begin