From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Linus_Bj=C3=B6rnstam?= Newsgroups: gmane.lisp.guile.user,gmane.lisp.guile.devel Subject: Re: Scheme+ Date: Mon, 20 Dec 2021 09:15:49 +0100 Message-ID: <14e10823-2655-48c2-9736-383708da492e@www.fastmail.com> References: Mime-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33037"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Cyrus-JMAP/3.5.0-alpha0-4524-g5e5d2efdba-fm-20211214.001-g5e5d2efd To: "Damien Mattei" , guile-user , guile-devel Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Mon Dec 20 17:48:55 2021 Return-path: Envelope-to: guile-user@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 1mzLqI-0008MM-6Z for guile-user@m.gmane-mx.org; Mon, 20 Dec 2021 17:48:54 +0100 Original-Received: from localhost ([::1]:59634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzLqH-0008I2-4D for guile-user@m.gmane-mx.org; Mon, 20 Dec 2021 11:48:53 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:41592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzKTQ-0002gY-89; Mon, 20 Dec 2021 10:21:14 -0500 Original-Received: from out5-smtp.messagingengine.com ([66.111.4.29]:34047) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzKT9-0007gu-0N; Mon, 20 Dec 2021 10:21:01 -0500 Original-Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id A1B745C005A; Mon, 20 Dec 2021 03:16:58 -0500 (EST) Original-Received: from imap51 ([10.202.2.101]) by compute5.internal (MEProxy); Mon, 20 Dec 2021 03:16:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.se; h= mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type:content-transfer-encoding; s=fm1; bh=+sgeA u5pVbZwxxYdoR8yRN/sz3USrZvx16L8G5F7d/c=; b=AHRvtrx40hNtKqClxz1F4 mQdMNKUAfAuKKQAObqkB2hKttwG6GrjEjTlpih9EJ85qjerwxDDvHrOnxdNj+AZd ju9qy64ZIfqYfAB/4JjoInVdjOwQ23PS+LEfWcROXgexwiIqqrcBNEGVbwUPiRnP a2K9GXtIasfj0TOO3/6L6V7Vn1V3LHvSpghWqQ8oPrB+jSDJiZk2+HyOILj2JDTQ g20XUn4IISIPzfAjeFoj9oqVhjUXfcV5CvOn9s4MgZRBvBva+V7jz/uYKYrDJgxc EfNlzDTZgWst+aQRCtSk0YJ5iaQpGWzZGMLjnxfD1/O3n2aSKhoe+UmiA23MFvHJ Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=+sgeAu5pVbZwxxYdoR8yRN/sz3USrZvx16L8G5F7d /c=; b=J+ObYkUK9nh9L6Hd4rgHXqc0KExca5UIiSvorqXOMPuomp6ANBd7ZxWXD VmHIEztSwSEHyBrhDTO11+lV6F+jAS9AM+9inz36DJB18CR5/cziOX5ZuTUgdUNi lEfwqZj6ujiGTq50bFJjwkN1g2Xjhs3OqnPbeBZLkcxgYrQH/JhQm7xeX7i6jpCI EOb+CHCG2UyWQ2onrFqu4nJaxJ41N2A03v5mQgQncCu8k5PvI45ESlTSE6jzjpm6 rctrtSIhr1TCQTht7szUbEgdfjIZv2H9SDtrF2UmXpmx07iGRR+COxvsmqc1STLx kpy8MEGDKKvVfYTMbEvjcWvL7cx/w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddruddtuddguddulecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enogfuuhhsphgvtghtffhomhgrihhnucdlgeelmdenucfjughrpefofgggkfgjfhffhffv ufgtgfesthhqredtreerjeenucfhrhhomhepnfhinhhushgpuehjnphrnhhsthgrmhcuoe hlihhnuhhsrdhinhhtvghrnhgvthesfhgrshhtmhgrihhlrdhsvgeqnecuggftrfgrthht vghrnhepvdegteeihfelgfffhefffeejvdeitdefffffleetfffhvdekheekfeeuhfekie eknecuffhomhgrihhnpehgihhthhhusgdrihhopdhgihhthhhusgdrtghomhdprhgvrggu mhgvrdhmugenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehlihhnuhhsrdhinhhtvghrnhgvthesfhgrshhtmhgrihhlrdhsvg X-ME-Proxy: Original-Received: by mailuser.nyi.internal (Postfix, from userid 501) id 428591BC0069; Mon, 20 Dec 2021 03:16:58 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface In-Reply-To: Received-SPF: pass client-ip=66.111.4.29; envelope-from=linus.internet@fastmail.se; helo=out5-smtp.messagingengine.com 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_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:17888 gmane.lisp.guile.devel:21018 Archived-At: Hi Damien! I played around with it and it seems to rely heavily on mutation, which = makes guile (and chez and racket for that matter) box the values. That a= dds a layer of indirection to memory access, meaning slower code (apart = from the more obvious problems of continuation safety and threading safe= ty). It could be partially fixed with a very much not fun to write synta= x case macro: you expand a body as far as possible into a letrec* (and l= etrec-syntax) shadowing bindings when needed and use set! only in places= where bindings are not declared.=20 The workhorse you need for that is syntax-local-binding. If you want this system to be resilient and work well with other scheme= code that is probably the path to go. One could imagining having a proc= edure form that is fully expanded, analyzed and then some-kind-of-CPS-tr= ansformed so that all variables are passed as state. That way you would = get continuation and thread safety, while allowing something that seems = like and, at least locally, behaves like mutation to take place.=20 This (the local mutation part) is tangential to something I have wanted = to write for a long time, but I have not had the time (nor intelligence)= . If you want to discuss some ideas or have any question we can take thi= s off-list. Another thing would be to not use call/cc in the def form. Let/ec is a l= ot faster. --=20 Linus Bj=C3=B6rnstam On Mon, 20 Dec 2021, at 01:05, Damien Mattei wrote: > Hi, > I finished today the first version of Scheme+. > Scheme+ is an extension of the syntax of the Scheme language. > Scheme+ makes it easy the assignment of Scheme objects in infix (works= also > in prefix) notation with a few new operators =E2=86=90 (or <-), [ ],= =E2=A5=86 (or <+) . > > Scheme+ does much more things,see: > > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+io.html > > or: > > https://github.com/damien-mattei/Scheme-PLUS-for-Guile/blob/main/READM= E.md > > static light HTML page: > https://damien-mattei.github.io/Scheme-PLUS-for-Guile/Scheme+.html > > direct link to code and README: > https://github.com/damien-mattei/Scheme-PLUS-for-Guile > > Best regards, > > Damien Mattei