Noah Lavine <noah.b.lav...@gmail.com> writes: > Hello, > > I just got a confusing error while making a Guile module. I was > writing a module, and wanted to use the compile function - the one > that exists by default in the REPL environment. However, when I used > the compile function in a module and tried to load that module, I got > an unbound variable error for the name 'compile'! Coincidentally, I also came across this during my current (as yet unfinished) trek though the manual to find wrong and non-self contained examples. (patches coming soon)
Section 10.4.1 describes the following "quine" that doesn't actually work :) ((lambda (x) ((compile x) x)) ’(lambda (x) ((compile x) x))) > However, I think this could have been very confusing to a new user. > It's not intuitive that a function that is available by default at the > REPL is not available in a module. I don't even know where to go to > look up what things are available in a module and what are not. I don't think there are that many included though: (ice-9 top-repl) includes (ice-9 r5rs) (ice-9 session) (ice-9 regex) and (ice-9 threads). The define-module for (guile-user) at the bottom of boot-9.scm also autoloads (system base compile) I think (ice-9 threads) and (ice-9 regex) could be confusing for new users; (ice-9 session) less so. As for looking up: if a module is imported at the repl, then using the ",a" meta commmand is helpful, though you could just use "apropos" from (ice−9 session) directly. Mostly I rely on geiser, which will display it in emacs' minibuffer if my point is on the identifier, or I'll get the info from C-c C-d C-d. If the module isn't imported, the repl (and therefore geiser) is less helpful, and I'll just search the manual. > Was this limitation on purpose? If so, I'd like to know what's going > on so I can document it more. If not, there's a bug in the current > master. I guess it is, NEWS says "Correctly written scripts load the modules they require at the top of the file and should not be affected by this change.", that's ages ago though -- "Changes since Guile 1.3.2:". Looks to me like a case of "it's that way, because it's always been that way" Just my £0.02. -- Ian Price "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"