unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: "Tommi Höynälänmaa" <tommi.hoynalanmaa@gmail.com>
To: guile-devel@gnu.org
Subject: Exporting a nonexistent variable
Date: Mon, 4 Nov 2024 14:26:58 +0200	[thread overview]
Message-ID: <ff0a315c-44ce-8c95-fc4b-a326f301c741@gmail.com> (raw)

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.hoynalanmaa@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	other threads:[~2024-11-04 12:26 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-04 12:26 Tommi Höynälänmaa [this message]
2024-11-04 20:43 ` Exporting a nonexistent variable Maxime Devos
2024-11-05  7:25   ` Tommi Höynälänmaa
2024-11-05  9:23     ` Maxime Devos
2024-11-05  9:26       ` Maxime Devos
2024-11-05 10:00       ` Tommi Höynälänmaa
2024-11-13 22:22 ` Attila Lendvai
2024-11-14  9:42   ` Maxime Devos via Developers list for Guile, the GNU extensibility library
2024-11-14 10:27     ` Mikael Djurfeldt

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=ff0a315c-44ce-8c95-fc4b-a326f301c741@gmail.com \
    --to=tommi.hoynalanmaa@gmail.com \
    --cc=guile-devel@gnu.org \
    /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).