unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Neil Jerram <neil@ossau.uklinux.net>
To: walck@lvc.edu
Cc: guile-user@gnu.org
Subject: Re: set-current-module in .guile ?
Date: Wed, 09 Apr 2008 21:16:43 +0100	[thread overview]
Message-ID: <873apupyvo.fsf@ossau.uklinux.net> (raw)
In-Reply-To: <18423.46537.161648.253613@entangle.lvc.edu> (Scott N. Walck's message of "Sat, 5 Apr 2008 13:24:25 -0400")

"Scott N. Walck" <walck@lvc.edu> writes:

> Dear Guilers,
>
> Dan Gildea has ported a large fraction of Gerry Sussman's scmutils
> code from MIT-scheme to guile.

That sounds interesting!

>  In doing so, he uses guile modules
> instead of MIT-scheme environments.  Much of the code creates a module
> called "generic-environment".  In an interactive guile session, you
> type
>
> (set-current-module generic-environment)
>
> and this redefines "+", for example, to add functions and vectors.
>
> I would like to know if there is a way to set the interactive
> environment to "generic-environment" in a .guile file.  If I put
>
> (set-current-module generic-environment)
>
> in a .guile file, it does nothing.  (I suppose because the current
> module when reading the .guile file is different from the current
> module in an interactive guile session?)

Some further thoughts on this...  When you invoke Guile interactively,
what it actually does is run a canned script, namely:

(begin
  (turn-on-debugging)
  (load-user-init)         ; This loads your .guile
  (top-repl))

All of those procedures are defined in ice-9/boot-9.scm, so you can
see what they do by looking at their code.

The cause of your specific problem is that (top-repl) does:

  (let ((guile-user-module (resolve-module '(guile-user))))
    ...
    (set-current-module guile-user-module)
    ...

So even though (set-current-module generic-environment) in .guile does
have an effect, that effect is overridden by the later
set-current-module call here.

One overall solution is to settle for (guile-user) being your current
module, and import everything you need from generic-environment by
making (guile-user) use generic-environment - as has been
suggested (and hopefully now debugged!) by others.

Another option is to take a copy of the (top-repl) code, and modify it
to do what you want - i.e. the set the current module to
generic-environment, instead of to (guile-user).  Then you can create
a file containing the definition of scmutils-top-repl, and top level
code:

(begin
  (turn-on-debugging)
  (load-user-init)
  (scmutils-top-repl))

and invoke as "guile -s <filename>".

Hope that helps; let us know if you have further questions!

Regards,
     Neil





      parent reply	other threads:[~2008-04-09 20:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-05 17:24 set-current-module in .guile ? Scott N. Walck
2008-04-05 21:00 ` Jon Wilson
2008-04-06  0:01   ` Walck, Scott
2008-04-06 14:58     ` Ludovic Courtès
2008-04-07  1:27       ` Walck, Scott
2008-04-07  7:16         ` Ludovic Courtès
2008-04-07 11:27           ` Walck, Scott
2008-04-07 13:38             ` Ludovic Courtès
2008-04-07 15:07               ` Scott N. Walck
2008-04-08 13:40                 ` Ludovic Courtès
2008-04-08 15:41                   ` Scott N. Walck
2008-04-09 15:05                 ` Ludovic Courtès
2008-04-09 15:24                   ` Walck, Scott
2008-04-09 20:16 ` Neil Jerram [this message]

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=873apupyvo.fsf@ossau.uklinux.net \
    --to=neil@ossau.uklinux.net \
    --cc=guile-user@gnu.org \
    --cc=walck@lvc.edu \
    /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).