From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Abou Samra Newsgroups: gmane.lisp.guile.user,gmane.lisp.guile.devel Subject: Re: string is read-only Date: Wed, 3 Aug 2022 12:33:59 +0200 Message-ID: References: <0474dc97-a009-7d0c-8fc8-fe831f13223a@gmail.com> Mime-Version: 1.0 (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="16348"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Damien Mattei , guile-user , guile-devel To: Taylan Kammer Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Wed Aug 03 12:35:46 2022 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 1oJBj7-00047X-Kn for guile-user@m.gmane-mx.org; Wed, 03 Aug 2022 12:35:45 +0200 Original-Received: from localhost ([::1]:36412 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJBj6-0004NE-Eh for guile-user@m.gmane-mx.org; Wed, 03 Aug 2022 06:35:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39638) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJBhV-0004Ju-A9; Wed, 03 Aug 2022 06:34:07 -0400 Original-Received: from mout.kundenserver.de ([212.227.126.130]:37907) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJBhS-0004If-Kd; Wed, 03 Aug 2022 06:34:04 -0400 Original-Received: from smtpclient.apple ([2.3.32.69]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.168]) with ESMTPSA (Nemesis) id 1M4K2r-1oJSgI3cIb-000HnF; Wed, 03 Aug 2022 12:33:59 +0200 In-Reply-To: <0474dc97-a009-7d0c-8fc8-fe831f13223a@gmail.com> X-Mailer: iPhone Mail (19F77) X-Provags-ID: V03:K1:RQS42m0nVXFQesiZVU7li7WOguvzTT7n8vZl1oPNG1WPl41TRr3 meJS4fu5H4BGpuhYYAOTUna6s3DtEiTzVnCYtxplu2Yg013kfydHNuPHuNrSVUztWUpEFUz 1jpJ9XFpDkouCQCyM8OMtdf/+/0apZ1MyDeAq/OXt7uGS5vigc4Nd59w5xpTGBvISKj3uOP YhKvobv6CBi532jPr03JA== X-UI-Out-Filterresults: notjunk:1;V03:K0:a6RqWgfKg1w=:SUMbZ92mbn4dq+U2gT5ISw InVNzncLzEAGOdSHbsWrd+gnTfXDCL4hN2yBrhlPyC/ccVHRrYC7k2YdyLBRhGuwJCDJ5W7d+ Fg7TJbqiZUdZjuQkZuSGA3q/uug/ug1mw94xRuaLY07mzZ9YTPliyFYXV0E8wskoJkVjqi3zY R1Uj5UYtXhIHJG4P1Plq0UpgO2yz7aaRTAtQkyPUXDKbrkIRlI9DJKc0pjF7LgNNYLRwJqm5O ek70D6ermjbX+kslRTAImpSod2kEdwW9JPdWBBri0lj+63BaOKDnHhirEsyOtZKQJE9SXEWxe zRg5jswzZxF+/m1F3GAaPvcY2YEESVDl0UQZRdT8/DUIoskRmb9YmpGRT9cG/FEw95ZGY9ntt YH7t8xgf+ZnlkUv4NSc1s/plmuwQS06IPTcOnxf6lv1zK/7RbCO3gYrfVxuqam3TYnC+Xh+LK wUqzdiBqPY//zKnLaD2h7Gjpel3DptNL0nXlMzxiC8hhwcDUFXLcnWTTrSaVVDpXDwivIZktU R8SRwlqlIurQD5pa5OKacKmEnRskCs7PTAmuaph+Tou8uftRRmfqHo9edcn785TL+0IrAYs8i +6QhWypqh//l7jLSQbd0BIaxZWqDGyD9rBk1tMzbKbeyapQyV+AEGw5BG2RPdXiR7k08SV+iC brZJ5hbGedvmin9BF8xJHr9zPO3jjcUi6jfXdxzEPJ+sGTMj4V0s5GmuPvaOnz6VlLMOjpMAr P6DM4in8WuxENkgvwfRbTrHEBB6QqmKIXdC8vg== Received-SPF: none client-ip=212.227.126.130; 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, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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:18479 gmane.lisp.guile.devel:21285 Archived-At: > Le 3 ao=C3=BBt 2022 =C3=A0 12:30, Taylan Kammer a= =C3=A9crit : >=20 > =EF=BB=BFOn 03.08.2022 11:50, Jean Abou Samra wrote: >>=20 >>=20 >>>> Le 3 ao=C3=BBt 2022 =C3=A0 11:49, Taylan Kammer a =C3=A9crit : >>>=20 >>> =EF=BB=BFOn 03.08.2022 11:12, Damien Mattei wrote: >>>> GNU Guile 3.0.1 >>>> Copyright (C) 1995-2020 Free Software Foundation, Inc. >>>>=20 >>>> Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. >>>> This program is free software, and you are welcome to redistribute it >>>> under certain conditions; type `,show c' for details. >>>>=20 >>>> Enter `,help' for help. >>>> scheme@(guile-user)> (define str2 "hello") >>>> scheme@(guile-user)> (string-set! str2 4 #\a) >>>> ice-9/boot-9.scm:1669:16: In procedure raise-exception: >>>> string is read-only: "hello" >>>>=20 >>>> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.= >>>> scheme@(guile-user) [1]> ,q >>>> scheme@(guile-user)> (string? str2) >>>> #t >>>>=20 >>>> is it a bug in Guile ? :-O >>>>=20 >>>> i can only find reference to deprecated read-only string in old doc: >>>> https://www.gnu.org/software/guile/docs/docs-1.6/guile-ref/Read-Only-St= rings.html#Read%20Only%20Strings >>>>=20 >>>> Regards, >>>>=20 >>>> Damien >>>=20 >>> String literals are constants, and it's intentional. >>>=20 >>> I'm not sure if it's mentioned anywhere in the manual. >>>=20 >>> If you want to get a mutable string from a literal, you can use: >>>=20 >>> (define str (string-copy "foobar")) >>>=20 >>> --=20 >>> Taylan >>=20 >> This is standard. See the intro of >>=20 >> https://srfi.schemers.org/srfi-135/ = >>=20 >>>=20 >=20 > This SRFI defines a new data type, which is not really relevant here. >=20 > As far as I know, Guile doesn't support it yet anyway. I just wanted to point to the intro, which summarizes the state of literal s= tring immutability in all recent RnRSes: """ In Scheme, strings are a mutable data type. Although it "is an error" (R5RS a= nd R7RS) to use string-set! on literal strings or on strings returned by sym= bol->string, and any attempt to do so "should raise an exception" (R6RS), """ > --=20 > Taylan