[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: loading a module via an absolute path
From: |
Rob Browning |
Subject: |
Re: loading a module via an absolute path |
Date: |
Sat, 05 Oct 2002 20:51:56 -0500 |
User-agent: |
Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.2 (i386-pc-linux-gnu) |
address@hidden (Paul Jarc) writes:
> which isn't always convenient. I think I ought to be able to
> duplicate what I like about use-modules with something like this:
> (eval '(load "/path/to/foo.scm") new-environment)
(eval-in-module '(primitive-load "/path/to/foo.scm") some-module)
might be what you want.
> - The manual says (load) will evaluate the file's contents in the
> top-level environment. Is that still true inside eval, or will it
> load into the specified environment?
> - What's the difference between load and primitive-load?
I think that's roughly the difference. If I recall right,
primitive-load doesn't alter the current-environment and doesn't
restore it after the load, but Marius can probably clarify if I'm
mistaken.
> - Is there a way to load from an already-open port rather than a
> filename? Could I just loop with read and eval? Would that handle,
> e.g., read-hash-extend properly? I don't see any reason it
> wouldn't.
I think that should work.
> - How do I create a new environment? The documented procedures don't
> seem to exist:
How about this:
$ guile
guile> (use-modules (ice-9 safe))
guile> (define msm (make-safe-module))
guile> msm
#<module 8089b50>
guile> (module-ref msm 'car)
#<primitive-procedure car>
guile> (eval 'car msm)
#<primitive-procedure car>
guile> (use-modules (ice-9 safe-r5rs))
guile> (define msm (null-environment 5))
guile> msm
#<interface 807ed30>
guile> (eval 'if msm)
#<primitive-macro! if>
guile> (module-ref msm 'if)
#<primitive-macro! if>
guile> (eval 'unlink msm)
Backtrace:
In current input:
6: 0* [eval unlink #<interface 807ed30>]
?: 1* unlink
<unnamed port>: In expression unlink:
<unnamed port>: Unbound variable: unlink
ABORT: (unbound-variable)
guile> (module-define! msm 'some-num 5)
#f
guile> (module-ref msm 'some-num)
5
guile> (eval 'some-num msm)
5
guile> some-num
Backtrace:
In unknown file:
?: 0* some-num
<unnamed port>: In expression some-num:
<unnamed port>: Unbound variable: some-num
ABORT: (unbound-variable)
guile> (module-use! (current-module) msm)
#f
guile> some-num
5
guile> (module-public-interface msm)
#f
guile> (define foo (resolve-module '(ice-9 safe)))
guile> (module-use! (current-module) (module-public-interface foo))
#f
guile> (module-public-interface foo)
#<interface (ice-9 safe) 808b200>
guile>
etc.
> guile> (null-environment 5)
> <unnamed port>:29:1: In expression (null-environment 5):
> <unnamed port>:29:1: Unbound variable: null-environment
> ABORT: (unbound-variable)
> guile> (scheme-report-environment 5)
> <unnamed port>:30:1: In expression (scheme-report-environment 5):
> <unnamed port>:30:1: Unbound variable: scheme-report-environment
> ABORT: (unbound-variable)
> guile> (assv-ref %guile-build-info 'guileversion)
> "1.6.0"
or perhaps just (version) :>
Hope this helps.
--
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C 64AE 78FE E5FE F0CB A0AD
- loading a module via an absolute path, Paul Jarc, 2002/10/04
- Re: loading a module via an absolute path,
Rob Browning <=
- Re: loading a module via an absolute path, Paul Jarc, 2002/10/07
- Re: loading a module via an absolute path, Paul Jarc, 2002/10/07
- Re: loading a module via an absolute path, Paul Jarc, 2002/10/18
- Re: loading a module via an absolute path, Marius Vollmer, 2002/10/18
- Re: loading a module via an absolute path, Paul Jarc, 2002/10/18
- Re: loading a module via an absolute path, Marius Vollmer, 2002/10/19
- Re: loading a module via an absolute path, Paul Jarc, 2002/10/19
- Re: loading a module via an absolute path, Marius Vollmer, 2002/10/20