From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: David Kastrup Newsgroups: gmane.comp.gnu.lilypond.devel,gmane.lisp.guile.devel Subject: Re: unhandled constant? Date: Sat, 01 Feb 2020 11:10:51 +0100 Message-ID: <87blqiwrbo.fsf@fencepost.gnu.org> References: <8d77f905-31e9-4d0b-973a-82be38360e07@www.fastmail.com> <07e36ec2-0c0c-4786-9040-ffcb3418e0bb@www.fastmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="102692"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: guile-devel@gnu.org, lilypond-devel To: Han-Wen Nienhuys Original-X-From: lilypond-devel-bounces+gnu-lilypond-devel=m.gmane-mx.org@gnu.org Sat Feb 01 11:11:10 2020 Return-path: Envelope-to: gnu-lilypond-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ixpk6-000QZN-3J for gnu-lilypond-devel@m.gmane-mx.org; Sat, 01 Feb 2020 11:11:10 +0100 Original-Received: from localhost ([::1]:44686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ixpk5-0007C5-5s for gnu-lilypond-devel@m.gmane-mx.org; Sat, 01 Feb 2020 05:11:09 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44123) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ixpk0-0007BR-An; Sat, 01 Feb 2020 05:11:05 -0500 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:35696) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ixpk0-00034m-70; Sat, 01 Feb 2020 05:11:04 -0500 Original-Received: from x2f45ef2.dyn.telefonica.de ([2.244.94.242]:35054 helo=lola) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ixpjp-00019o-Dd; Sat, 01 Feb 2020 05:11:03 -0500 In-Reply-To: (Han-Wen Nienhuys's message of "Sat, 1 Feb 2020 10:56:29 +0100") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: lilypond-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions on LilyPond development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lilypond-devel-bounces+gnu-lilypond-devel=m.gmane-mx.org@gnu.org Original-Sender: "lilypond-devel" Xref: news.gmane.io gmane.comp.gnu.lilypond.devel:72483 gmane.lisp.guile.devel:20367 Archived-At: Han-Wen Nienhuys writes: > +lilypond-devel for visibility. > > On Sat, Feb 1, 2020 at 10:54 AM Han-Wen Nienhuys wrot= e: >> >> Here is an example that shows better how things work, and what might >> be the cause of my problems. Is it right that programmatically set >> contents of "current-module" are not serialized into the compiled >> file? >> >> (define (run-at-compile-time cmd) >> (module-define! (current-module) (string->symbol cmd) #t) >> (format (current-error-port) "I-am-called-at-compile-time ~a\n" cmd= )) >> >> (define (runtime-call cmd) >> (format (current-error-port) "I-am-called-at-runtime ~a\n" cmd) >> (format (current-error-port) "val ~a\n" >> (module-ref (current-module) (string->symbol cmd)))) >> >> (defmacro foo (cmd . rest) >> (run-at-compile-time cmd) >> `(runtime-call ,cmd)) >> >> (foo "xy") >> >> $ guile1.8 ew.scm >> I-am-called-at-compile-time xy >> I-am-called-at-runtime xy >> val #t >> >> this is compatible with 2.2 without compilation, >> >> $ GUILE_AUTO_COMPILE=3D0 guile2.2 ew.scm >> I-am-called-at-compile-time xy >> I-am-called-at-runtime xy >> val #t >> >> but compilation fails >> >> $ GUILE_AUTO_COMPILE=3D1 guile2.2 ew.scm >> ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=3D0 >> ;;; or pass the --no-auto-compile argument to disable. >> ;;; compiling /home/hanwen/vc/lilypond/ew.scm >> ;;; WARNING: compilation of /home/hanwen/vc/lilypond/ew.scm failed: >> ;;; Unbound variable: run-at-compile-time >> >> $ guild2.2 compile ew.scm >> Backtrace: >> In system/base/target.scm: >> 57:6 19 (with-target _ _) >> In system/base/compile.scm: >> .. >> Unbound variable: run-at-compile-time >> >> >> If I encapsulate the run-at-compile-time definition with >> >> (eval-when >> (compile eval) >> >> it works if I remove the module manipulation, but the module-ref >> doesn't work. It looks like the settings from module-define! are not >> serialized into the byte code, so I can't have code that relies on >> correspondence between module-define driven from macros and module-ref >> during evaluation. >> >> [hanwen@localhost lilypond]$ guild2.2 compile ew.scm >> I-am-called-at-compile-time xy >> wrote `/home/hanwen/.cache/guile/ccache/2.2-LE-8-3.A/home/hanwen/vc/lily= pond/ew.scm.go' >> [hanwen@localhost lilypond]$ GUILE_AUTO_COMPILE=3D0 guile2.2 ew.scm >> I-am-called-at-runtime xy >> Backtrace: >> 6 (apply-smob/1 #) >> In ice-9/boot-9.scm: >> 705:2 5 (call-with-prompt ("prompt") # =E2=80=A6) >> In ice-9/eval.scm: >> 619:8 4 (_ #(#(#))) >> In ice-9/boot-9.scm: >> 2312:4 3 (save-module-excursion #) >> 3832:12 2 (_) >> In ew.scm: >> 10:10 1 (runtime-call "xy") >> In unknown file: >> 0 (scm-error misc-error #f "~A ~S ~S ~S" ("No variabl=E2=80= =A6" =E2=80=A6) =E2=80=A6) >> >> ERROR: In procedure scm-error: >> No variable named xy in # >> But that is not using a local define at all. Can you point out the actual code that failed for you? --=20 David Kastrup