Consider files foo-runner.scm: (import (foo) (scheme write)) (display (bar)) foo.scm: (define-library (foo) (import (scheme base) (ice-9 regex)) (export bar) (begin (define (bar) (make-regexp "a")))) Running this with guile -L . foo-runner.scm, yields error foo.scm:1:0: In procedure bar: Unbound variable: make-regexp It seems using other libraries is fine; eg it works if I change foo.scm to (define-library (foo) (import (scheme base) (ice-9 match)) (export bar) (begin (define (bar) (match "a" (_ "bar"))))) It also works if I try using regexp from application instead of module; eg if I change foo-runner.scm to (import (foo) (scheme write) (ice-9 regex)) (display (make-regexp "a")) I'm running version 3.0.5, installed through debian testing branch package manager