impload pasted by mario-goulart on Tue Jun 17 21:36:21 2014
(use files) (define-syntax impload (ir-macro-transformer (lambda (expr inject compare) (let ((file-path (cadr expr))) `(begin (import ,(string->symbol (pathname-file file-path))) (load ,file-path)))))) (impload "src/mod.scm")
impload use case added by mario-goulart on Tue Jun 17 21:54:24 2014
$ ls -l total 12 -rw-r--r-- 1 mario mario 240 Jun 17 16:49 impload.scm drwxr-xr-x 2 mario mario 128 Jun 17 15:41 src -rwxr-xr-x 1 mario mario 44 Jun 17 16:50 test-impload.scm -rwxr-xr-x 1 mario mario 10 Jun 17 16:50 test-use.scm $ cat src/mod.scm (module mod (foo) (import chicken scheme) (define (foo) (print "hi")) ) $ cd src/ && csc -J -s mod.scm && cd .. $ ls -l src/ total 20 -rw-r--r-- 1 mario mario 193 Jun 17 15:40 mod.import.scm -rw-r--r-- 1 mario mario 75 Jun 17 15:40 mod.scm -rwxr-xr-x 1 mario mario 11633 Jun 17 16:51 mod.so $ cat test-use.scm (use mod) (foo) $ cat test-impload.scm (include "impload") (impload "src/mod.scm") (foo) $ csi -s test-use.scm Error: (import) during expansion of (import ...) - cannot import from undefined module: mod ... $ CHICKEN_INCLUDE_PATH=src csi -s test-use.scm Error: (require) cannot load extension: mod ... $ CHICKEN_INCLUDE_PATH=src csi -s test-impload.scm hi