From unknown Sat Jun 14 00:04:19 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#52112 <52112@debbugs.gnu.org> To: bug#52112 <52112@debbugs.gnu.org> Subject: Status: Compilation of macro returning record type fails Reply-To: bug#52112 <52112@debbugs.gnu.org> Date: Sat, 14 Jun 2025 07:04:19 +0000 retitle 52112 Compilation of macro returning record type fails reassign 52112 guile submitter 52112 Jean Abou Samra severity 52112 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 25 12:51:16 2021 Received: (at submit) by debbugs.gnu.org; 25 Nov 2021 17:51:16 +0000 Received: from localhost ([127.0.0.1]:57976 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqItv-000172-Up for submit@debbugs.gnu.org; Thu, 25 Nov 2021 12:51:16 -0500 Received: from lists.gnu.org ([209.51.188.17]:49836) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqItr-00016r-8J for submit@debbugs.gnu.org; Thu, 25 Nov 2021 12:51:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54594) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqItq-00086B-O3 for bug-guile@gnu.org; Thu, 25 Nov 2021 12:51:10 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:59555) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqItn-000279-G4 for bug-guile@gnu.org; Thu, 25 Nov 2021 12:51:10 -0500 Received: from [10.188.216.67] ([46.193.67.184]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.184]) with ESMTPSA (Nemesis) id 1MdeKd-1mGgsp2KDR-00Zidp for ; Thu, 25 Nov 2021 18:45:50 +0100 Message-ID: Date: Thu, 25 Nov 2021 18:45:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.1 Content-Language: en-US To: bug-guile@gnu.org From: Jean Abou Samra Subject: Compilation of macro returning record type fails Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:gYm/+4nHF7qsIhtPgV0+ItN5ERY0SANxPQnSZZZRq19kilJ7f25 JWP6ug/bohdmF/6OQ4RRslCtvoQYqyjN30a7j+ZfOj2iDdjiuzZkbaJ21zMQrLMEL/TR+un FbaG33s/343YCcVXPfLaX4imjBCBVevxWE2zuCMvA5vycFMlyJ5MPNSGLYgrE9FeotQDtX0 6bpnn09yJybSwmC0C5YNw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:pJ9Zyn4PMoA=:QbkfPywErQ7DaaeF3j9MA3 iq6TsJzWWvHmA3y+nS/vQHgUPymwdl+Mk5/nYSaZAjT7idTMy/Fbus42v5qRyDNlVwo32fC7p UOQkUqCmOKWpnLFUnhBjGt74HGJfwuO8rW+YGJlEUT1kseywXyaDgoKe2SRvHQVujukcdbnnT aiRUo1fgdWG4qW7P7M497giwz8slifKanhpbWperuiRWwm5sssHKhCNDH1nleXeOIeKiXYsx4 /oE5InrtXwuNFM79q78dNP0Ezw2PDZ83Wl1HjoCtC77wczloiidiYvCsk7OWbkWlas8SRvHYM U5ee/I3p5xk+vA50EH8GxCySuiz2RQm4iHNydZHdKuRfPQRp3vtgBmlpGliZ2BFjTXtZ0Ytqx zG2U7hI57aL5qwm+0zZEBvamxyb3dwyGxUnfjkrQQrAUztbERhHxUUKcTSTU4WLGp+Wl+OWca /pndXBTkfdAivcH/BktDbRJYCscuSe06ywOIeqzBTXLHAYkfm61Ng24O3uQlQqDyVxoIVfcul D7xqXthUGGnr2/qxFhew9NtqkeAdAy2vZzRLfl4184CQo5r13lap4+cj8gXmYfboezNMM0cZ5 bHBsvswX1JKXnKauwLyXqU1FmhGLGfeoY00AyRn7A5C1QxY6hQAYZ5s8VDiLwvFNAMzVa8FhF YreOmwqYVx5znrspTsoKrSvSF1FHAhucvj3/B8kZVWx642xrMXGSwkDVzC78XMzEdiXSoglkA MHfCTGJO9swCQs69 Received-SPF: none client-ip=212.227.17.13; envelope-from=jean@abou-samra.fr; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Record types are self-evaluating: scheme@(guile-user)> (eval (make-record-type 'my-record '()) (current-module)) $1 = # Yet, when a macro returns a record type, Guile fails to byte-compile the code, even though the execution (via the evaluator) works fine. Here is a simple example: (define-macro (my-macro)   (make-record-type 'my-record-2 '())) (display (my-macro)) (newline) Execution log: $ guile --no-auto-compile test.scm # $ guile test.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;;       or pass the --no-auto-compile argument to disable. ;;; compiling /home/jean/test.scm ;;; WARNING: compilation of /home/jean/test.scm failed: ;;; unhandled constant # # This is with Guile version 3.0.5.130-5a1e7. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 26 13:54:45 2021 Received: (at 52112) by debbugs.gnu.org; 26 Nov 2021 18:54:45 +0000 Received: from localhost ([127.0.0.1]:60552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqgMv-0000DT-89 for submit@debbugs.gnu.org; Fri, 26 Nov 2021 13:54:45 -0500 Received: from mail-wm1-f41.google.com ([209.85.128.41]:56249) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqgMu-0000DE-0C for 52112@debbugs.gnu.org; Fri, 26 Nov 2021 13:54:44 -0500 Received: by mail-wm1-f41.google.com with SMTP id p18so8887309wmq.5 for <52112@debbugs.gnu.org>; Fri, 26 Nov 2021 10:54:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=CqMu2ayUdeEzoByJvvfRdUC/Er7NT6l5vruCiJNVjIA=; b=MToxbXZ16xQg6skPjdVUuHaM5pkIohHV6yrd+HIhE2VsbMhh2Tq4lg7fQ5k+6LzvD2 sWe8+7VH0KYFVyJixYm86udDYpYj6SDZdTTnyamg3Uh0+dXgngr/cKofjI3qNKKTe38/ UW7RLU8E3YmGHi+Mte/MNlA1ABNvlDYZY9AhAQCdyS1AwT7ozw4HM3AITKR07lVKsVVR 7WuJ+2slYbYc9ZBtvY5WCBU1tv1mVR7FLVjf+/jt8DZ9U6blvNaZWZuAHM3pR+sjdMKk 8a6gbZEai+GVtDVos16BfO4342vdsu/nH1NEoxqrI4B1+k9ySyjVmNkee40l5nYuMQ3P 4flA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=CqMu2ayUdeEzoByJvvfRdUC/Er7NT6l5vruCiJNVjIA=; b=DouOd6r1wGKxy0xi3soMqRdZd3Q13ABOXWkv5T2SMssJJReYVve1XOHt+/NOhMkW43 gyxbN+/1bqh+gikNvv299afxoSPqZ6vF0mtP3h6P2hNCPGHns9cLWAkumWrCausmKRmT QW3cqsgBQuR7se8BFZF3ao8/zmAnffRBe9Vfd4lxpTZ59Ac/+zRQwtWceUqxlJBSoBvD PMtaZRDYmsrekgiBnorPmpB2EGWIhqpXqWP+Xkvs1xj0FnRe7qktW5yhddh1bfbzztbZ sLjr85tcX5FZI4KZpBfzaZ1C63ftBMLuJrnCIx4jxt36o38ISA2kdQtfNcHx0PaSVRe3 SoVg== X-Gm-Message-State: AOAM532WrtIEqQVhNZATPGq0CYzD6zM8eregU/NCMD1jUjynt6fO/kVP tfISCRYYUd8jlbb/tFC32QE= X-Google-Smtp-Source: ABdhPJzImOYVTd0Koh2YJEXOsmRJxfatzikNSYH+FRaCCP3AlVZQfmpE400kLUPH9I5ZcqFeqdrulg== X-Received: by 2002:a05:600c:4982:: with SMTP id h2mr17208146wmp.4.1637952878051; Fri, 26 Nov 2021 10:54:38 -0800 (PST) Received: from [192.168.178.20] (b2b-109-90-125-150.unitymedia.biz. [109.90.125.150]) by smtp.gmail.com with ESMTPSA id o12sm7753907wmq.12.2021.11.26.10.54.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 26 Nov 2021 10:54:37 -0800 (PST) Message-ID: <5a97c5fd-ee56-e636-ae18-679570e2502b@gmail.com> Date: Fri, 26 Nov 2021 19:54:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: bug#52112: Compilation of macro returning record type fails Content-Language: en-US To: Jean Abou Samra , 52112@debbugs.gnu.org References: From: Taylan Kammer In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.1 (/) X-Debbugs-Envelope-To: 52112 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.1 (-) On 25.11.2021 18:45, Jean Abou Samra wrote: > Record types are self-evaluating: > > scheme@(guile-user)> (eval (make-record-type 'my-record '()) (current-module)) > $1 = # > > Yet, when a macro returns a record type, Guile fails > to byte-compile the code, even though the execution > (via the evaluator) works fine. Here is a simple example: > > > (define-macro (my-macro) >   (make-record-type 'my-record-2 '())) > > (display (my-macro)) > (newline) > > > Execution log: > > > $ guile --no-auto-compile test.scm > # > > $ guile test.scm > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 > ;;;       or pass the --no-auto-compile argument to disable. > ;;; compiling /home/jean/test.scm > ;;; WARNING: compilation of /home/jean/test.scm failed: > ;;; unhandled constant # > # > > This is with Guile version 3.0.5.130-5a1e7. I don't think that's supposed to work. I find it surprising that record-type objects are self-evaluating, and in any case they can't be turned into bytecode. Your macro could return code that evaluates to a record definition. Would that solve your use-case? -- Taylan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 26 14:02:48 2021 Received: (at 52112) by debbugs.gnu.org; 26 Nov 2021 19:02:48 +0000 Received: from localhost ([127.0.0.1]:60565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqgUi-0000SC-KA for submit@debbugs.gnu.org; Fri, 26 Nov 2021 14:02:48 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:40529) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mqgUg-0000Rw-MT for 52112@debbugs.gnu.org; Fri, 26 Nov 2021 14:02:47 -0500 Received: from [10.188.216.67] ([46.193.67.184]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.184]) with ESMTPSA (Nemesis) id 1Mz9IT-1mdyrL09mF-00wGQY; Fri, 26 Nov 2021 20:02:40 +0100 Message-ID: <41883031-68aa-de96-0cd0-504578fbdabe@abou-samra.fr> Date: Fri, 26 Nov 2021 20:02:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.1 Subject: Re: bug#52112: Compilation of macro returning record type fails Content-Language: en-US To: Taylan Kammer , 52112@debbugs.gnu.org References: <5a97c5fd-ee56-e636-ae18-679570e2502b@gmail.com> From: Jean Abou Samra In-Reply-To: <5a97c5fd-ee56-e636-ae18-679570e2502b@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:AdnAFxSoYibG0SjCSE4WZee/vWRu5V+uZ0L+6RbMncrdrNXPYDi r7g+hf1xJPBs74iGnRUg16zmqpo8etglL5qoltcBj4AfA6BYnH8luELmmIHxOizmEtiCzXx SrmdFAKPmx3OExwEJ8R9iWifF24YPpD4mS/h4rEVeaC/ZBbtCdM5sm5nSh9lwshjNIzofWV 9WDG4zq0Tcc4eVJU1y5Aw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:UZUhA48Zu2g=:ZEi3hdRO45vV1yOA4MGB+K Fv/XPozkqp8IcMY0QNV9p85hCSucSNjCQHhls8ifHJdxfHCFsZVIphktSUlZkwelfQ2/ySkbm hcG996QDwFzm96OaxVYwQhp6DrIqJBHnS4PD2+k/GD2h+Ezmf1QM2R4FDMBRklWpQCelaf5M6 XRJCBpY5wtaOUt64O2Glkj++8L/10rvVzHpwSS83icvZZDibgRgJZKuuMMS5Ry77icaMw7Gmh JWdWphViPKPtnqwU/ioQI7XVJDF/u6d0qjA/0l5wcCRCvbHplpW/jtIgdTCRmcHqgS+0hfxym EK++tfWbEN2MN265ckWT+0OweinE2r5ezYWmwmTS7TaTouj/COdV0Oar4QHPvwD6AeGw4QAjR EAtv51WU7MhcabhjipTV3rZF4d0/20dusvP6nFx937M6BqH9OA7VifwCdTpLnWOgsajApaVRd N0/StPnyMNkhGdHlWp+a/j19wMRnMm+2MSGg1/bbUTHyIQ5dHI8dzVFOaalNimK3AJcsBqKiG 8fl+G+knXCLHtcuHGO394HjNlr5LYdv+C09j40jOwx+tbvXnEkt+qSoZOM2efecHMGsnsLBFN 67yGLiu3Qv7TRZZLPFo3Tti/nrIYq8VIXF792RRFGw73w4Z6UUkw4fiGGKcioZjbbc+9/tBYl BaCRuiXFGKkGZM+E5slG1JYNs4KGq+wEODi6IHK9atXims67ehRe5qUCW53HiGFbmAkzOfzxi 0lpLA/GJj/V5x5xp X-Spam-Score: -0.1 (/) X-Debbugs-Envelope-To: 52112 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.1 (-) Thanks for your reply. Le 26/11/2021 à 19:54, Taylan Kammer a écrit : > I don't think that's supposed to work. I find it surprising that > record-type objects are self-evaluating, and in any case they can't > be turned into bytecode. > > Your macro could return code that evaluates to a record definition. > Would that solve your use-case? Yes, that is how I solved it in LilyPond (https://gitlab.com/lilypond/lilypond/-/merge_requests/1026). I was also somewhat surprised to see that record types are self-evaluating. I don't know where to check in R6RS what the expected behavior would be. At any rate, it seems that there is an inconsistency between the interpreter and the compiler that would warrant resolving either way.