guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Confusing Error Message


From: Ian Price
Subject: Re: Confusing Error Message
Date: Wed, 14 Mar 2012 01:27:48 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux)

Noah Lavine <address@hidden> 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"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]