From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Attila Lendvai Newsgroups: gmane.lisp.guile.devel Subject: RE: exception from inside false-if-exception? Date: Mon, 17 Jun 2024 21:45:42 +0000 Message-ID: References: <87le4wz1s9.fsf@cbaines.net> <20240506205840.Kuyd2C00E17cfcj01uygoD@xavier.telenet-ops.be> <20240617225055.ckqu2C0045M5ED401kquFP@laurent.telenet-ops.be> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_6bkQt1af2rUfvynIDD3CjlNDVKkWSBQq8Sng7yEQWE" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32385"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Christopher Baines , "guile-devel@gnu.org" , "46009@debbugs.gnu.org" <46009@debbugs.gnu.org> To: Maxime Devos Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Mon Jun 17 23:46:10 2024 Return-path: Envelope-to: guile-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 1sJKAz-0008E1-Kw for guile-devel@m.gmane-mx.org; Mon, 17 Jun 2024 23:46:10 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sJKAm-0001Cx-9H; Mon, 17 Jun 2024 17:45:56 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sJKAj-0001Co-T1 for guile-devel@gnu.org; Mon, 17 Jun 2024 17:45:53 -0400 Original-Received: from mail-4323.proton.ch ([185.70.43.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sJKAg-0000Jc-6l for guile-devel@gnu.org; Mon, 17 Jun 2024 17:45:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lendvai.name; s=protonmail2; t=1718660746; x=1718919946; bh=xswrqBRL8kkgoPHDQ2xAKUPqzeG+unCI4PzXMP/GnUc=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=D+TZh6GchWkVA5WZ957t5iG4YL57IGL0lvthzsCa/xKpLeUSz/Tk7nvXYjMHFieut UNxXKWXwd7KycmHNxtFHpNXXxwULOa7WYq29Q8pULizEh4tFMs6+ADf/zqBa/nNmN0 fLG77MNnMq+9f2ibrEiI1TC9RNsUg6vFu5AqZDwOdhh/ZoPW+/zJIzMxP8aabGC8B0 5H54qWitPgJwbvL+92Zgp3CkumlvvtrvhnziwmzlDI7lzJUonW+PLU8HIFFBlNSlTe vXWrXi0i4yBM0f6VgA4YEdnwPgsXE15xnephVs/ElVGOZ76sO9AgS2VxF8YAShMvsH BUzFG4tUQsHvw== In-Reply-To: <20240617225055.ckqu2C0045M5ED401kquFP@laurent.telenet-ops.be> Feedback-ID: 28384833:user:proton X-Pm-Message-ID: edd4844a74f2213d5b57348caf5dbfd4604e9197 Received-SPF: pass client-ip=185.70.43.23; envelope-from=attila@lendvai.name; helo=mail-4323.proton.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:22447 Archived-At: This is a multi-part message in MIME format. --b1_6bkQt1af2rUfvynIDD3CjlNDVKkWSBQq8Sng7yEQWE Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > What is lousy and expectation-violating about a keyword argument > doing what it name describes? well, this should have been discussed at the R6RS committee, but... an API is facilitating efficient reading comprehension when the "verbs" are= closer to the beginning of the "sentence" (the sexp), and nothing later in= the sentence adjusts the meaning of the verb fundamentally. and especially= not a keyword arg at the end of the sentence that is not even mandatory, a= nd defaults to one of the rather different possibilities. in this case, it's a primitive to catch and handle exceptions. and it's pos= sible to implement both #:unwind? #t and #f so that when the handler return= s then the control flow continues at the guard, and never at the RAISE. it'= s just that one version would call the handler before unwinding. > If you have unwinded, it=E2=80=99s too late to return return from the rai= se > (unless the implementation is doing delimited continuations > shenanigans, which maybe you had in mind?), which explains the > behaviour for #:unwind #true. i didn't have anything on my mind, and that's the point. i'm simply new to = scheme. now that i've learned it, i'll learn to live with it. put another way, my learning curve would have been much steeper if the two,= rather different behaviors were defined under two distinct names (or at le= ast mentioned with bold in the documentation). > That said, I would prefer it to be named something like [#:handler-contex= t 'raise]/[#:handler-context 'guard] that would be better, but i still wouldn't like the fact that it's focusing= on the dynamic context of the handler, instead of the different flow of co= ntrol. for reference, in CL they are called HANDLER-CASE and HANDLER-BIND, with co= mpletely different syntaxes. > Wait where did this happen? You say what=E2=80=99s happening, but you don= =E2=80=99t > seem to be referring to false-if-exception stuff, and you didn=E2=80= =99t > mention continuation barriers earlier. this has caused me layers of confusion, which is sadly reflected in my mail= s. guile prints a backtrace without any prelude, which made me think that it's= my own code that is printing this backtrace and exception in the logs (rem= ember, i'm working on nested error handling and logging in shepherd). then = 3.0.9 does something funny with the control flow, which further made me bel= ieve that i'm logging an exception coming from inside FALSE-IF-EXCEPTION an= d it's somehow flying past my error handler, and reaching fibers. and i think i'm still confused about a possible continuation barrier being = injected somewhere that probably/maybe causes the exception from inside FAL= SE-IF-EXCEPTION somehow ending up at fibers instead of my error handler. bu= t at this point i'm reaching the frontier of my understanding of scheme, de= limited continuations, fibers, etc. so, one step at a time. once this test.scm is clear, and i'm able to run sh= epherd on guile-next, then i'll get back to investigate my original issue i= n its original context. > It would be helpful to include in test.scm what the expected output > would be and what unexpected output is encountered. i've attached a new test.scm that contains the output of two runs, one with= 3.0.9, and one with guile HEAD (more specifically, guile-next in guix, whi= ch is almost guile HEAD). HTH, -- =E2=80=A2 attila lendvai =E2=80=A2 PGP: 963F 5D5F 45C7 DFCD 0A39 -- =E2=80=9CLife becomes easier when you learn to accept the apology you never= got.=E2=80=9D =09=E2=80=94 Robert Brault --b1_6bkQt1af2rUfvynIDD3CjlNDVKkWSBQq8Sng7yEQWE Content-Type: text/x-scheme; name=test.scm Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=test.scm IyEvdXNyL2Jpbi9lbnYgLVMgZ3VpbGUgLS1uby1hdXRvLWNvbXBpbGUgLWUgbWFpbiAtcwohIwoK KHVzZS1tb2R1bGVzIChpY2UtOSBjb250cm9sKSkKCihkZWZpbmUqICh0ZXN0ICM6a2V5ICh1bndp bmQ/ICNmKSkKICAobGV0L2VjIHJldHVybgogICAgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIKICAg ICAgICAobGV0ICgobmVzdGVkICNmKSkKICAgICAgICAgIChsYW1iZGEgKGMtbGV2ZWwtMSkKICAg ICAgICAgICAgKGlmIG5lc3RlZAogICAgICAgICAgICAgICAgKGJlZ2luCiAgICAgICAgICAgICAg ICAgIChmb3JtYXQgI3QgImxldmVsIDEgaGFuZGxlciBnb3QgY2FsbGVkIHJlY3Vyc2l2ZWx5fiUi KQogICAgICAgICAgICAgICAgICAnbGV2ZWwtMS1oYW5kbGVyLW5lc3RlZCkKICAgICAgICAgICAg ICAgIChiZWdpbgogICAgICAgICAgICAgICAgICAoc2V0ISBuZXN0ZWQgI3QpCiAgICAgICAgICAg ICAgICAgICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhIChjLWxldmVsLTIpCiAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbgogICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgI3QgImxldmVsIDIgaGFuZGxlciBnb3QgZXJyb3IgfkF+ JSIgYy1sZXZlbC0yKQogICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgI3QgImxldmVs IDIgaGFuZGxlciBpcyByZXR1cm5pbmd+JSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJl dHVybiAnbGV2ZWwtMi1oYW5kbGVyKSkpCiAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQog ICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAjdCAibGV2ZWwgMSBoYW5kbGVyfiUiKQogICAg ICAgICAgICAgICAgICAgICAgKGVycm9yICJsZXQncyBzaWduYWwgYSBuZXN0ZWQgZXJyb3IuLi4i KQogICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAjdCAibGV2ZWwgMSBoYW5kbGVyIGlzIHJl dHVybmluZ34lIikKICAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4gJ2xldmVsLTEtaGFuZGxl cikpCiAgICAgICAgICAgICAgICAgICAgIzp1bndpbmQ/IHVud2luZD8pKSkpKQogICAgICAobGFt YmRhICgpCiAgICAgICAgKGVycm9yICJsZXQncyBzaWduYWwgYW4gZXJyb3IuLi4iKQogICAgICAg ICd0aHVuaykKICAgICAgIzp1bndpbmQ/IHVud2luZD8pKSkKCihkZWZpbmUgKG1haW4gY21kKQog ICh1bnNldGVudiAiQ09MVU1OUyIpCiAgKGZvcm1hdCAjdCAifiV+JSoqKiBjYWxsaW5nIHdpdGgg dW53aW5kfiUiKQogIChmb3JtYXQgI3QgInJldHVybiB2YWx1ZSBpczogfkF+JSIgKHRlc3QgIzp1 bndpbmQ/ICN0KSkKICAoZm9ybWF0ICN0ICJ+JX4lKioqIGNhbGxpbmcgd2l0aG91dCB1bndpbmR+ JSIpCiAgKGZvcm1hdCAjdCAicmV0dXJuIHZhbHVlIGlzOiB+QX4lIiAodGVzdCAjOnVud2luZD8g I2YpKSkKCiN8CiQgZ3VpbGUgLS12ZXJzaW9uCmd1aWxlIChHTlUgR3VpbGUpIDMuMC45CiQgZ3Vp bGUgLS1uby1hdXRvLWNvbXBpbGUgLWUgbWFpbiAtcyB+L3dvcmtzcGFjZS9ndWlsZS90ZXN0LnNj bQoKCioqKiBjYWxsaW5nIHdpdGggdW53aW5kCmxldmVsIDEgaGFuZGxlcgpsZXZlbCAyIGhhbmRs ZXIgZ290IGVycm9yICM8JmNvbXBvdW5kLWV4Y2VwdGlvbiBjb21wb25lbnRzOiAoIzwmZXJyb3I+ ICM8Jm9yaWdpbiBvcmlnaW46ICNmPiAjPCZtZXNzYWdlIG1lc3NhZ2U6ICJ+QSI+ICM8Jmlycml0 YW50cyBpcnJpdGFudHM6ICgibGV0J3Mgc2lnbmFsIGEgbmVzdGVkIGVycm9yLi4uIik+ICM8JmV4 Y2VwdGlvbi13aXRoLWtpbmQtYW5kLWFyZ3Mga2luZDogbWlzYy1lcnJvciBhcmdzOiAoI2YgIn5B IiAoImxldCdzIHNpZ25hbCBhIG5lc3RlZCBlcnJvci4uLiIpICNmKT4pPgpsZXZlbCAyIGhhbmRs ZXIgaXMgcmV0dXJuaW5nCnJldHVybiB2YWx1ZSBpczogbGV2ZWwtMi1oYW5kbGVyCgoKKioqIGNh bGxpbmcgd2l0aG91dCB1bndpbmQKbGV2ZWwgMSBoYW5kbGVyCkJhY2t0cmFjZToKSW4gaWNlLTkv Ym9vdC05LnNjbToKICAxNzUyOjEwIDEyICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIF8gXyAjOnVu d2luZD8gXyAjIF8pCkluIHVua25vd24gZmlsZToKICAgICAgICAgIDExIChhcHBseS1zbW9iLzAg Izx0aHVuayA3ZjhkNzMzMTMzMDA+KQpJbiBpY2UtOS9ib290LTkuc2NtOgogICAgNzI0OjIgMTAg KGNhbGwtd2l0aC1wcm9tcHQgKCJwcm9tcHQiKSAjPHByb2NlZHVyZSA3ZjhkNzMzMjRmODAg4oCm PiDigKYpCkluIGljZS05L2V2YWwuc2NtOgogICAgNjE5OjggIDkgKF8gIygjKCM8ZGlyZWN0b3J5 IChndWlsZS11c2VyKSA3ZjhkNzMzMTZjODA+KSkpCiAgICAxNjM6OSAgOCAoXyAjKCMoIzxkaXJl Y3RvcnkgKGd1aWxlLXVzZXIpIDdmOGQ3MzMxNmM4MD4pICgiL2hv4oCmIikpKQpJbiBpY2UtOS9i b290LTkuc2NtOgogICAgNzI0OjIgIDcgKGNhbGwtd2l0aC1wcm9tcHQgKGxldC9lYykgIzxwcm9j ZWR1cmUgN2Y4ZDczMzUyOTAwIGF04oCmPiDigKYpCiAgMTc1MjoxMCAgNiAod2l0aC1leGNlcHRp b24taGFuZGxlciBfIF8gIzp1bndpbmQ/IF8gIyBfKQpJbiBpY2UtOS9ldmFsLnNjbToKICAgIDYx OTo4ICA1IChfICMoIygjPGRpcmVjdG9yeSAoZ3VpbGUtdXNlcikgN2Y4ZDczMzE2YzgwPikpKQpJ biBpY2UtOS9ib290LTkuc2NtOgogICAyMDA3OjcgIDQgKGVycm9yIF8gLiBfKQogIDE2ODU6MTYg IDMgKHJhaXNlLWV4Y2VwdGlvbiBfICM6Y29udGludWFibGU/IF8pCiAgMTc1MjoxMCAgMiAod2l0 aC1leGNlcHRpb24taGFuZGxlciBfIF8gIzp1bndpbmQ/IF8gIyBfKQpJbiBpY2UtOS9ldmFsLnNj bToKICAgIDYxOTo4ICAxIChfICMoIygjPGRpcmVjdG9yeSAoZ3VpbGUtdXNlcikgN2Y4ZDczMzE2 YzgwPiAjPHByb2PigKY+KSkpCkluIGljZS05L2Jvb3QtOS5zY206CiAgIDIwMDc6NyAgMCAoZXJy b3IgXyAuIF8pCgppY2UtOS9ib290LTkuc2NtOjIwMDc6NzogSW4gcHJvY2VkdXJlIGVycm9yOgps ZXQncyBzaWduYWwgYSBuZXN0ZWQgZXJyb3IuLi4KJAp8IwoKCgoKI3wKJCAvZ251L3N0b3JlL3ht MDhjcDNmejNqeHEzemRkZzljdmo1OWlkeTNyaThiLWd1aWxlLTMuMC45OS1naXQvYmluL2d1aWxl IC0tbm8tYXV0by1jb21waWxlIC1lIG1haW4gLXMgfi93b3Jrc3BhY2UvZ3VpbGUvdGVzdC5zY20K CgoqKiogY2FsbGluZyB3aXRoIHVud2luZApsZXZlbCAxIGhhbmRsZXIKbGV2ZWwgMiBoYW5kbGVy IGdvdCBlcnJvciAjPCZjb21wb3VuZC1leGNlcHRpb24gY29tcG9uZW50czogKCM8JmVycm9yPiAj PCZvcmlnaW4gb3JpZ2luOiAjZj4gIzwmbWVzc2FnZSBtZXNzYWdlOiAifkEiPiAjPCZpcnJpdGFu dHMgaXJyaXRhbnRzOiAoImxldCdzIHNpZ25hbCBhIG5lc3RlZCBlcnJvci4uLiIpPiAjPCZleGNl cHRpb24td2l0aC1raW5kLWFuZC1hcmdzIGtpbmQ6IG1pc2MtZXJyb3IgYXJnczogKCNmICJ+QSIg KCJsZXQncyBzaWduYWwgYSBuZXN0ZWQgZXJyb3IuLi4iKSAjZik+KT4KbGV2ZWwgMiBoYW5kbGVy IGlzIHJldHVybmluZwpyZXR1cm4gdmFsdWUgaXM6IGxldmVsLTItaGFuZGxlcgoKCioqKiBjYWxs aW5nIHdpdGhvdXQgdW53aW5kCmxldmVsIDEgaGFuZGxlcgpsZXZlbCAyIGhhbmRsZXIgZ290IGVy cm9yICM8JmNvbXBvdW5kLWV4Y2VwdGlvbiBjb21wb25lbnRzOiAoIzwmZXJyb3I+ICM8Jm9yaWdp biBvcmlnaW46ICNmPiAjPCZtZXNzYWdlIG1lc3NhZ2U6ICJ+QSI+ICM8Jmlycml0YW50cyBpcnJp dGFudHM6ICgibGV0J3Mgc2lnbmFsIGEgbmVzdGVkIGVycm9yLi4uIik+ICM8JmV4Y2VwdGlvbi13 aXRoLWtpbmQtYW5kLWFyZ3Mga2luZDogbWlzYy1lcnJvciBhcmdzOiAoI2YgIn5BIiAoImxldCdz IHNpZ25hbCBhIG5lc3RlZCBlcnJvci4uLiIpICNmKT4pPgpsZXZlbCAyIGhhbmRsZXIgaXMgcmV0 dXJuaW5nCnJldHVybiB2YWx1ZSBpczogbGV2ZWwtMi1oYW5kbGVyCiQKfCMK --b1_6bkQt1af2rUfvynIDD3CjlNDVKkWSBQq8Sng7yEQWE--