From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Dr. Arne Babenhauserheide" Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCH] add SRFI-119 / language/wisp to Guile? (new patch, squashed) Date: Sat, 20 Jan 2024 20:18:22 +0100 Message-ID: <87le8j4vly.fsf@web.de> References: <87h6w2fkz8.fsf@web.de> <1e0d07bc-dcf8-fe56-7f16-a72e5df0c20d@telenet.be> <875ybr2hk9.fsf@gnu.org> <87v8jrdmk5.fsf@web.de> <87jzzr7cba.fsf@web.de> <87v8hc8i8v.fsf@web.de> <87legrs23a.fsf@gnu.org> <209e68fd-b010-8213-6c9b-a0d1b8f0f72c@telenet.be> <87o7jf2slw.fsf@web.de> <875y5h8j04.fsf@web.de> <87il9ctzhl.fsf@gnu.org> <875y5cdyvt.fsf@web.de> <87sf7omuag.fsf@web.de> <877co1jgww.fsf@web.de> <875y3egjtd.fsf@web.de> <87sf5v67k5.fsf@web.de> <87mstf9e67.fsf@web.de> <340c71c5-9e25-d622-8b24-9c18ea373a77@mutix.org> <877ck5t370.fsf@elephly.net> <22ec8c54-fca0-b797-9c03-f2cc461dea6a@mutix.org> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5773"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.10.8; emacs 30.0.50 Cc: Christina O'Donnell , guile-devel@gnu.org To: Damien Mattei Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sat Jan 20 21:07:48 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 1rRHd5-0001Iy-EN for guile-devel@m.gmane-mx.org; Sat, 20 Jan 2024 21:07:47 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rRHcp-0006Yv-G6; Sat, 20 Jan 2024 15:07:31 -0500 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 1rRHcn-0006Yb-BV for guile-devel@gnu.org; Sat, 20 Jan 2024 15:07:29 -0500 Original-Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rRHcl-0003pK-3u for guile-devel@gnu.org; Sat, 20 Jan 2024 15:07:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1705781243; x=1706386043; i=arne_bab@web.de; bh=xGQ2/dJExZWsnJE3wjFweLGMNpLPYd+yS7Twqjb44/Y=; h=X-UI-Sender-Class:References:From:To:Cc:Subject:Date: In-reply-to; b=WfUejchzyLUNFveB7syY0FaT05V049dan2qyUoEbNlYZldtMtWeodEbqzLDuraPx 09cwXnmOybGr1zyyEqr1gbXri9T0yJvyDah/oBll5TutoyQdElyZ8Qnzi05FuUWPu a1QkbtaUTTARErwZbxPxuwX4hbjMAM/q7rv1z3CWTULBEJEaU9b5hMwd6EaieKZFU yAYEGkxbnrt6InDcQcKbKy94DXNUJ2d3gcSfOejQhw3qsvala2oZPlkPKqWU1g5Yy Eh3Gt7gF2mh3+gKa9WZUASih9/010OdtOFRVJcoqts2szs/w6T/UO1pI28/hUqXZZ Feh/WCZub1xyr360fA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Original-Received: from fluss ([84.165.16.40]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MV2OY-1rZYnU3fOA-00S7pk; Sat, 20 Jan 2024 21:07:22 +0100 In-reply-to: X-Provags-ID: V03:K1:iCHO0LbGwVtD6HzbZnKdwHpOAwCeSLW25uf1+JaQrmuucXqHFdC N+Uj7UKEIv/491wqdgwnzxsgBEcay+eHCAkTFrlpxZGhnMglSBtLVzuJhSbJMV6r13Jfaub EvjwcTuYeDbYM5spHAAwAG/GoHf2RVBNMLsYExyTgGpL5/n86nXa4Q/hrKQaME2dMHH9DFH 9iwGKiCayz0eKZ672qc3Q== UI-OutboundReport: notjunk:1;M01:P0:+20iDdNnZec=;cxg18SRGjOGR5EuRpsY0zWWVCmj lf3AWbj4A2JttuRpeAkPOhy67g+iAvdJIsV8o6H09Be8T54WlC5UzwbrwK0Ob78JHEVsKIYOU q0tWr0TjK0gfOr79jRpZgpEvZuMY6mcY6YJtOSHjbcV/ypNQVbaOlB90hEPkCEHmoQJ3mfqbw 2BJBAu3zMY7XihuIRX0BbfMLjZqiNfekD6nT2VO3I4fa6FH4JL5ZbzPk8iCozVkI3hew8r+hB 8TecyxjP/zmJVo3ehcCIjR5DVYimi1n6MgROEXLCxDeFnnhH2oG0XJr+uoo0AbPwwQsewhQWN Z/riUxguy+oY7nXE9/L9eTf4oe80W640vCX1vUStnH4p/wSvR/YN01BgvzCuZOMP1o7bryI4U VAIYgfeBBWGlCthCVQOH7q7MS/1Z8oWSsRAETEgz8pZ6M9+iOhuwKi9dcQaEv6beQOkjRwKcH pzraPhZAxRRxntSfifbx+QWXVuq5fhbqam0OTYMaIw3O4a3w0BxTqdj0fJrVCjdtnEwRP80Fd go74VIIRAIACvtrkmSlnUnvJ48x2DdFEW+rGcog/gXESfvmKYtGTh7vuRfX6RpYiWRyhAzQ0b bhZxlPB+SsQ7K7z43H0SQt/JWERQLKf4Yz06d550HWrwvdKYTwanf2wnk81uihkcf1Hz+j7mm JysI3aacUYF670N7qSS/HYd0CyY0sdTpji+PikDG2R/GRwJ0LqcaLHzMbE4XuBjufjoSN3vdj O7CNV/UamiZTpX4Q0yVBNgKjnrrxohw8fSRgypjPXYaJp6ZvTOj0kVWc9OglxPU10aEaoBja Received-SPF: pass client-ip=212.227.15.4; envelope-from=arne_bab@web.de; helo=mout.web.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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:22275 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Damien Mattei writes: > i just add a #; support in Scheme+ : https://github.com/damien-mattei/Sc= heme-PLUS-for-Guile > Scheme+ is an extension syntax to Scheme. It goes in the opposite directi= on of Wisp or Rhombus (based on Racket)=20 Note that Wisp and Rhombus differ: Wisp is just Scheme that allows reducing parentheses where they can be inferred from indentation. In intentionally avoids doing anything complex, so it keeps compatibility with future improvements of Scheme. If you want to improve beyond what Wisp offers, the best way is usually to build appropriate control structures that can also be used in regular Scheme. > by keeping the same > number of parenthesis, but they are just differents : ( ), { }, [ ] > and it allow the use of infix expressions. Is your implementation of {} compatible with SRFI-105? (curly infix) Can it be used to provide proper operator precedence? (that=E2=80=99s curre= ntly not offered by SRFI-105 and would be quite an improvement) > Parenthesis have advantage on indentation (and inconvenient i admit). For= example if you comment a single line of indented code (python for > example) that was used to define a loop you have to reindent all the body= code in the loop. If you want to move a block of indented code you > then have to re-indent it specifically for the new place too. To some degree yes, though rectangle-editing in Emacs usually makes that painless. > Anyway scheme and scheme+ ,C ,C++ code are still indented for readness ev= en if parentheses would be enough to validate the syntax. One point of wisp is that having a parenthesis as first element on almost every line makes it harder for people to understand the code as long as they have not yet trained their eyes to fade parens. Indentation is what=E2=80=99s easier to humans to understand at a glance, s= o if you want to prevent mistakes, you have to indent strictly by the parens. Wisp follows Python in the reasoning that if the parens *always* strictly define the indentation, you can just edit the indentation in the first place without the "detour" over the parens. An alternate way of getting something similar is parinfer which strictly couples parens and indentation while editing: https://shaunlebron.github.io/parinfer/ There are also cases where parentheses are clearer, even for newcomers. For these, Wisp defers to pure paren-processing inside parentheses (this also enables simple copy-pasting of regular Scheme code). Combining rainbow parens (or other ways to fade parens) with parinfer gives similar reading experience as with wisp, but only for those in specialized editors, so it doesn=E2=80=99t help newcomers. On the other hand, a mode like lispy provides expert users with a level of convenience during editing parethesized code which clearly outclasses editing Wisp. So these show clear reasons why Wisp is most used in the niche of newcomers: =2D it looks easier without specialized modes, including patches =2D it makes it easier to do simple changes (you don=E2=80=99t have to keep parentheses balanced) =2D it makes it *harder* to build advanced tooling which does in-place editing of the AST and simply reflows the code, because switching between styles (i.e. adding linebreaks when something is inserted in a line) requires more decisions when you use wisp. I like it that way, because it encourages contributing code to the regular Scheme codebase, and not building a separate set of Wisp modules. That reduces the risk of splitting the community. Best wishes, Arne =2D-=20 Unpolitisch sein hei=C3=9Ft politisch sein, ohne es zu merken. draketo.de --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJEBAEBCAAuFiEE801qEjXQSQPNItXAE++NRSQDw+sFAmWsJ/oQHGFybmVfYmFi QHdlYi5kZQAKCRAT741FJAPD633RD/9qqTct0WQFWqwM7APvW209nFuZ44qFWufh OTht7GlLFoeS6K2eP/QONjOBZ25TunG/WU8lkYnPCl6yHVBkx0AUAQRq3ZMY02VL FU5VZasEqtmEAjn6xmpM1UqyjcFPPUQ6UdtMM5RO97yVG+qR5hw8t9KWLkrPHspG K+z+m82KGdP1mZf2PggS0iAcouxcgrzG5Zodw5+9A5UdFnblwMR5N+XoJVLqzSr2 yqoHm2UHFRrze2rvG//spNHpGHPKrdEhPAx2hmSnhbn4ULYrjK1mSGBoqbQiqfFx W8liY8cmOmzjt3n4VgzhuHbraHZQjarTeu8DkbSNIa6pjjuyAEbT+NfBrDbf/DmP FYh9iHHrSM/qmO1V0f6XXXnKNAbV7BqOWaEqqRx+E5hJqRy62G3w3JRXPlJOT7P2 4vIPBdukNSf3Un08cTT9FsifPbdNXwpXCMnOsFauj7ZDpyldGgmYR0YXvS3Aie+u IjopTI0Da4ONVFfw5frV2ASWHT3YqWgvgbjb1udWVBIcGzLQC1WBRStK5baVHPGF rRwsFP9fdYHWV0euQO462k6cuMUd0IDNp01YLcbUUqzvKdSyfPmI7wT+oAi23GdF n2KEm2h/JXh0wsZi9PYhGPj/dne5GzpI48f/fVrdifGPJiB8ZbIJIULkjY/C+FZr RFTcod0DDojEBAEBCAAuFiEE3Si95tmHXKvOSosd3M8NswvBBUgFAmWsJ/oQHGFy bmVfYmFiQHdlYi5kZQAKCRDczw2zC8EFSE1TA/97L9WsKjfC11GFjPPrh+McR01D Blndxj3MuwSKhgbV3YZAgLcz0FOOMftwsJIulG3TzXQywg+6wn/kxS01VP8Y2DUs rYhjYy65Omp/gVORZfgaZfkbFPRp0+r7y2zx/CJS+/9Dzzf8zu6ae0/jEPKDnTlH O8L/UswvdWvHhJDIxA== =MVtF -----END PGP SIGNATURE----- --=-=-=--