Hi Michael, On Tue, 14 Jun 2016 11:09:09 -0400 Michael Silver <msil...@csail.mit.edu> wrote:
> I’m new to CHICKEN and I’m working on converting a large Guile > codebase to CHICKEN. Welcome! > The codebase is a collection of shared libraries (each library in a > separate .scm file), collectively known as “lab-core”. So, I’ve > packaged it all as an egg called “lab-core” with each individual .scm > file as it’s own module (under different names). Does this seem like > a reasonable way to package such a project? Sounds good to me. > As I go file by file converting to CHICKEN modules, I keep running > into “module unresolved” errors when attempting to install my egg via > chicken-install. Usually you should see some warnings that may lead to "module unresolved" errors. When I try to compile your example, I get: Warning: reference to possibly unbound identifier `string-chomp' in: Warning: port-puts Warning: suggesting: `(import data-structures)' Warning: reference to possibly unbound identifier `with-output-to-string' in: Warning: port-puts Warning: suggesting: `(import ports)' Error: module unresolved: loglevel That means: * in `port-puts' you are using `string-chomp', which is exported by the data-structures module, but you are not importing it. * in `port-puts' you are using `with-output-to-string', which is exported by the ports module, but you are not importing it. So, all you need to do is: $ diff -u loglevel.scm.orig loglevel.scm --- loglevel.scm.orig 2016-06-14 21:08:03.547764310 +0200 +++ loglevel.scm 2016-06-14 21:08:13.711763790 +0200 @@ -1,6 +1,6 @@ (module loglevel * (import chicken scheme) -(use srfi-1) +(use data-structures ports srfi-1) ;; Expected behavior: > Unfortunately, the output gives no indication of which function is > causing the error or why, and the only way I’ve been able to figure > this out is by commenting out chunks of code and narrowing down until > I find the offending function. If I delete that function, the module > compiles perfectly and I can use the rest of the functions just as you > would expect. What does "module unresolved” mean and is there a better > way to figure out what is causing it? Do you see the warnings in the compiler output? > I’ve attached a MWE where loglevel is a stripped-down version of one > such library causing the “module unresolved” error. Here are the steps > to reproduce: > $ cd lab-core > lab-core$ chicken-install -debug > (see attached output.txt for the debug output) > > Compare this to: > $ csi >> (load “loglevel-no-module.scm”) >> (err-puts "foo" 42 "!”) > foo42! > “!" > which shows my functions working perfectly as long as I’m not using > module syntax. > > Why would compiling into a module cause an error when my functions > work fine in the REPL? Any help would be appreciated. That's because the interpreter implicitly loads some modules, and the compiler doesn't do that. All the best. Mario -- http://parenteses.org/mario _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users