Exporting a nonexistent variable in a guile module can cause runtime errors. To see this, consider the following example:

--- mod1.scm ---

(define-module (mod1))

(export myproc)

(define (myproc)
  (display "Hello\n"))

--- end ---

--- mod2.scm ---
(define-module (mod2))

(export myproc
        myproc2)

(define (myproc2)
  (display "Hello again\n"))

--- end ---

--- program.scm ---
(use-modules (mod1)
             (mod2))

(define (main args)
  (myproc))

--- end ---

Running "guile -e main -s program.scm" causes the following error

---

WARNING: (guile-user): `myproc' imported from both (mod1) and (mod2)
Backtrace:
In ice-9/boot-9.scm:
  1762:12  4 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           3 (apply-smob/0 #<thunk 7f3e3cd10300>)
In ice-9/boot-9.scm:
    731:2  2 (call-with-prompt ("prompt") #<procedure 7f3e3cd22b00 …> …)
In ice-9/eval.scm:
    619:8  1 (_ #(#(#<directory (guile-user) 7f3e3cd13c80>)))
In program.scm:
      6:3  0 (main _)

program.scm:6:3: In procedure main:
Unbound variable: myproc

---

I think Guile could report a warning if a nonexistent variable is exported as the cause of this kind of errors may be difficult to find in a large program.

     - Tommi Höynälänmaa

--
Kotisivu / Homepage: http://www.iki.fi/tohoyn/
Sähköposti / E-Mail: tommi.hoynalan...@iki.fi
GPG-sormenjälki / GPG fingerprint:
55F4 2477 7155 3528 5CB2 2B7A BB86 1FDE 4046 0F83
FT, Debian-ylläpitäjä / PhD, Debian Maintainer


Reply via email to