diff --git a/src/duck.scm b/src/duck.scm index 4f6c6eb..dd1d284 100644 --- a/src/duck.scm +++ b/src/duck.scm @@ -35,7 +35,7 @@ (chicken syntax)) (define-syntax duck-extract-defines - (syntax-rules (define define/doc make-parameter) + (syntax-rules (define define/doc make-parameter define* define*/doc) ((_ (define var val)) (define var val)) ((_ (define/doc var doc val)) @@ -54,18 +54,29 @@ ((_ (define/doc (proc . args) doc expr ...)) (define (proc . args) expr ...)) + ((_ (define* (proc . args) expr ...)) + (define* (proc . args) expr ...)) + ((_ (define*/doc (proc . args) doc expr ...)) + (define* (proc . args) expr ...)) + ((_ expr) expr))) (define-syntax duck-extract-doc - (syntax-rules (define/doc make-parameter) - ((_ mod (define/doc (proc . args) doc expr ...)) + (syntax-rules (define/doc make-parameter define*/doc) + ((_ (define/doc (proc . args) doc expr ...)) (list 'FUN 'proc `doc 'args)) - ((_ mod (define/doc var doc arg (make-parameter val))) + ((_ (define*/doc (proc . args) doc expr ...)) + (list 'FUN 'proc `doc 'args)) + ((_ (define/doc var doc arg (make-parameter val))) (list 'PAR 'var `doc 'arg 'val)) - ((_ mod (define/doc var doc val)) + ((_ (define*/doc var doc arg (make-parameter val))) + (list 'PAR 'var `doc 'arg 'val)) + ((_ (define/doc var doc val)) (list 'VAR 'var `doc 'val)) - ((_ mod expr) + ((_ (define*/doc var doc val)) + (list 'VAR 'var `doc 'val)) + ((_ expr) #f))) (define-syntax module* @@ -83,7 +94,7 @@ (duck-extract-defines expr) ... (define modname (list (list 'MOD 'modname `(doc ...)) - (duck-extract-doc modname expr) ...)))) + (duck-extract-doc expr) ...)))) ((_ modname expr ...) (module* modname #:doc () expr ...))))