as Ludovic kindly pointed out on IRC, i can use this instead: (module-filename (current-module)) unfortunately, this returns a relative path, which is only useful using (search-path %load-path ...), which introduces some uncertainty about what actually gets loaded depending on the runtime value of %load-path... :| therefore, i decided to read the file at macroexpand-time. after some struggle with hygienic macros: (define-syntax read-module-relative-file (lambda (syn) (syntax-case syn () ((_ filename) (with-syntax ;; Read the file at compile time and macroexpand to the first form. ((form (%read-module-relative-file (current-module) (syntax->datum #'filename)))) #''form))))) (define (%read-module-relative-file module filename) (with-input-from-file (or (search-path %load-path (string-append (dirname (module-filename module)) "/" filename)) (error "%read-module-relative-file failed for" filename)) read)) not beautiful, but works. -- • attila lendvai • PGP: 963F 5D5F 45C7 DFCD 0A39 -- “It is just as difficult and dangerous to try to free a people that wants to remain servile as it is to enslave a people that wants to remain free.” — Niccolò Machiavelli (1469–1527)