Summary
load then import of module inside eval fails to find module
Metadata
- Id: ae4c4b24c143b1edf78d5bcbb3c05a2af35876ea
- Trac id: 1326
- Type: defect
- Reporter: caolan
- Owner:
- Cc:
- Status: closed
- Component: unknown
- Estimated difficulty:
- Resolution: invalid
- Priority: major
- Milestone: someday
- Version: 4.11.0
- Changetime: 2017-08-25 14:29:15 UTC
- Created: 2016-09-03 23:46:29 UTC
- Keywords:
Description
test-module.scm
(module test-module * (import chicken scheme) (define (hello name) (string-append "Hello, " name)))
In csi:
#;1> (eval '(begin (load "test-module.scm") (import test-module) (hello "world"))) Error: (import) during expansion of (import ...) - cannot import from undefined module: test-module Call history: <syntax> (eval (quote (begin (load "test-module.scm") (import test-module) (hello "world")))) <syntax> (quote (begin (load "test-module.scm") (import test-module) (hello "world"))) <syntax> (##core#quote (begin (load "test-module.scm") (import test-module) (hello "world"))) <eval> (eval (quote (begin (load "test-module.scm") (import test-module) (hello "world")))) <syntax> (begin (load "test-module.scm") (import test-module) (hello "world")) <syntax> (##core#begin (load "test-module.scm") (import test-module) (hello "world")) <syntax> (load "test-module.scm") <syntax> (import test-module) <--
This code works if I enter it directly into csi without the eval. Interestingly, it also works if I split the eval into two steps:
#;1> (eval '(begin (load "test-module.scm"))) ; loading test-module.scm ... ; loading /usr/lib/chicken/8/chicken.import.so ... #;2> (eval '(begin (import test-module) (hello "world"))) "Hello, world"
Changes and comments
[2017-08-25 14:29:15 UTC] sjamaan changed status from new to closed
[2017-08-25 14:29:15 UTC] sjamaan set resolution to invalid
[2017-08-25 14:29:15 UTC] sjamaan wrote:
That's because import is evaluated at macro-expansion time, which it has to do in order to be able to correctly rename identifiers occurring in the program. I'm fairly sure this is not a bug.