(module minimod ((minimod make-minimod) minimod-import) (import scheme (only chicken.base define-record-type)) (define-record-type minimod (make-minimod promise) minimod? (promise minimod-promise)) (define-syntax minimod (syntax-rules () ([minimod name (exp1 exp2 ...) body ...] (define name (make-minimod (delay (eval '(set!-values (exp1 exp2 ...) (let () body ... (values exp1 exp2 ...)))))))))) (define (minimod-import minimod) (force (minimod-promise minimod))))