another scribble/lp/lang/lang repair
svn: r13767 original commit: 327fa47487930554e1dd2537a8fcb9ab5793f67b
This commit is contained in:
parent
d33566e09f
commit
a6002db1ec
|
@ -70,37 +70,36 @@
|
||||||
|
|
||||||
(define-syntax (literate-begin stx)
|
(define-syntax (literate-begin stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(module-begin expr ...)
|
[(_ . exprs)
|
||||||
(with-syntax
|
(let loop ([exprs #'exprs])
|
||||||
([(body-code ...)
|
(syntax-case exprs ()
|
||||||
(let loop ([exprs (syntax->list #'(expr ...))])
|
[() #'(tangle)]
|
||||||
(cond
|
[(expr . exprs)
|
||||||
[(null? exprs) null]
|
(let ([expanded
|
||||||
[else
|
(local-expand #'expr
|
||||||
(let ([expanded
|
'module
|
||||||
(local-expand (car exprs)
|
(append (kernel-form-identifier-list)
|
||||||
'module
|
(syntax->list #'(provide
|
||||||
(append (kernel-form-identifier-list)
|
require
|
||||||
(syntax->list #'(provide
|
chunk
|
||||||
require
|
#%provide
|
||||||
#%provide
|
#%require))))])
|
||||||
#%require))))])
|
(syntax-case expanded (begin chunk require/chunk)
|
||||||
(syntax-case expanded (begin)
|
[(begin rest ...)
|
||||||
[(begin rest ...)
|
(loop (datum->syntax
|
||||||
(append (loop (syntax->list #'(rest ...)))
|
expanded
|
||||||
(loop (cdr exprs)))]
|
(append
|
||||||
[(id . rest)
|
(syntax->list #'(rest ...))
|
||||||
(ormap (lambda (kw) (free-identifier=? #'id kw))
|
#'exprs)))]
|
||||||
(syntax->list #'(require
|
[(id . _)
|
||||||
provide
|
(ormap (lambda (kw) (free-identifier=? #'id kw))
|
||||||
chunk
|
(syntax->list #'(require
|
||||||
#%require
|
provide
|
||||||
#%provide)))
|
chunk
|
||||||
(cons expanded (loop (cdr exprs)))]
|
#%require
|
||||||
[else (loop (cdr exprs))]))]))])
|
#%provide)))
|
||||||
#'(begin
|
#`(begin #,expanded (literate-begin . exprs))]
|
||||||
body-code ...
|
[else (loop #'exprs)]))]))]))
|
||||||
(tangle)))]))
|
|
||||||
|
|
||||||
(define-syntax (module-begin stx)
|
(define-syntax (module-begin stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user