This is the mail archive of the
guile@sourceware.cygnus.com
mailing list for the Guile project.
circular dependences
- To: guile at sourceware dot cygnus dot com
- Subject: circular dependences
- From: "Greg J. Badros" <gjb at cs dot washington dot edu>
- Date: 05 Dec 1999 16:47:00 -0800
AFAICT, no one ever responded to my concern about the handling of
circular module dependences in Guile:
http://sourceware.cygnus.com/ml/guile/1999-10/msg00101.html
I repeat my message below. This is becoming more and more of a problem
for Scwm. Should I really have to avoid circular dependences? Does the
new module system handle this better?
Thanks,
Greg
Previous message follows:
Consider:
bar.scm:
(define-module (bar)
:use-module (foo))
(define-public b a)
;; eof
foo.scm:
(define-module (foo)
:use-module (bar))
(define-public a #t)
;; eof
test.scm:
(use-modules (foo))
;; eof
Thus creating a circular dependency of modules. With Guile-1.3.5 (CVS
as of this weekend), when I do:
guile -s test.scm
I get the completely unintuitive and unhelpful:
ERROR: Unbound variable: a
Which is completely impossible to figure out since if I look at uses of
`a', they are in a module that does the proper include. A better error
message here would be *much* appreciated. Ideal something that
describes the circular dependence relationship.
Though this example makes it seem like it'd be completely obvious when
one has a circular dependency, it's definitely not-- I introduced one in
a mesh of dozens of use-module in Scwm and struggled for a while to try
to understand why I had an unbound variable warning.
Incidentally, the warnings when loading modules *with* real errors are
also in need of improvement, IMO.
Thanks,
Greg