[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55464: alternative way
From: |
Attila Lendvai |
Subject: |
bug#55464: alternative way |
Date: |
Tue, 17 May 2022 00:09:03 +0000 |
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)