From: Ian Price <ianprice90@googlemail.com>
To: Noah Lavine <noah.b.lavine@gmail.com>
Cc: guile-devel <guile-devel@gnu.org>
Subject: Re: Confusing Error Message
Date: Wed, 14 Mar 2012 01:27:48 +0000 [thread overview]
Message-ID: <87ehswq8dn.fsf@Kagami.home> (raw)
In-Reply-To: <CA+U71=Oupk37CrV0gUaSCpTgnO41FqNYGwTJmmEnZ=gkAQWFxA@mail.gmail.com> (Noah Lavine's message of "Tue, 13 Mar 2012 20:43:29 -0400")
Noah Lavine <noah.b.lavine@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"
next prev parent reply other threads:[~2012-03-14 1:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-14 0:43 Confusing Error Message Noah Lavine
2012-03-14 1:27 ` Ian Price [this message]
2013-01-16 18:10 ` Andy Wingo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ehswq8dn.fsf@Kagami.home \
--to=ianprice90@googlemail.com \
--cc=guile-devel@gnu.org \
--cc=noah.b.lavine@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).