<++> doit echo csc -s -j m0 -o m0.so m0.scm \ && csc -s -j m0 -o m0.so m0.scm \ && echo csc -s -o m0.import.so m0.import.scm \ && csc -s -o m0.import.so m0.import.scm \ && echo csc -I. -s -j m1 -o m1.so m1.scm \ && csc -I. -s -j m1 -o m1.so m1.scm \ && echo csc -I. -s -o m1.import.so m1.import.scm \ && csc -I. -s -o m1.import.so m1.import.scm \ && echo csc -L. -o main main.scm \ && csc -L. -o main main.scm \ && echo ./main \ && ./main <--> <++> m0.scm (module m0 * (import scheme) (import chicken) (define (f0 x y) `(,x ,y))) <--> <++> m1.scm (module m1 * (import-for-syntax scheme) (import-for-syntax chicken) (import-for-syntax m0) (import scheme) (import chicken) (use m0) (define-syntax make-f1 (ir-macro-transformer (lambda (form rename compare?) (let-values (((a b) (values -1 -2))) `(define (f1 x) (list ,a ,b ,(f0 x (cadr form)))))))) (make-f1 10)) <--> <++> main.scm (use m0 m1) (use extras) (pretty-print (f0 50 100)) (pretty-print (f1 5)) <-->