;; public.scm ;; ========== (declare (uses internal)) (module public (bar) (import scheme internal) (define (bar) (foo 21))) ;; internal.scm ;; ============ (declare (unsafe) (fixnum-arithmetic) (unit internal)) (module internal (foo) (import scheme) (define (foo x) (* x 2))) ;; Building… ;; ========= Either as two shared libraries or: chicken internal.scm -emit-all-import-libraries csc -s -J public.scm internal.c