(define-module worker (export make-worker) (select-module worker) ;; separates header from function declarations (define (make-worker n) (lambda () (set! n (+ n 1)) n) ) ) ;; end module worker
#!/usr/bin/env gosh -I. (use worker) (define (main argv) ;; automatically called as script ;; args are (cdr argv) (let ( (w (make-worker 0)) ) (print "worker: " (w)) (print "worker: " (w)) (print "worker: " (w)) ) )
% ./main.scm
Up to category-code