From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Bruce Korb Newsgroups: gmane.lisp.guile.devel Subject: Re: Guile: What's wrong with this? Date: Wed, 04 Jan 2012 09:16:34 -0800 Message-ID: <4F048972.5040803@gnu.org> References: <4F027F35.5020001@gmail.com> <1325603029.22166.YahooMailNeo@web37906.mail.mud.yahoo.com> <4F032C41.3070300@gmail.com> <87mxa4ifux.fsf@gnu.org> <4F038BF4.1070200@gnu.org> <87obujzmmc.fsf@Kagami.home> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1325697416 6855 80.91.229.12 (4 Jan 2012 17:16:56 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 4 Jan 2012 17:16:56 +0000 (UTC) Cc: guile-devel@gnu.org To: Ian Price , Andy Wingo Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Wed Jan 04 18:16:51 2012 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RiUSJ-00050x-9n for guile-devel@m.gmane.org; Wed, 04 Jan 2012 18:16:51 +0100 Original-Received: from localhost ([::1]:50903 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiUSI-000772-GC for guile-devel@m.gmane.org; Wed, 04 Jan 2012 12:16:50 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:51817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiUSA-00076i-7B for guile-devel@gnu.org; Wed, 04 Jan 2012 12:16:47 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RiUS5-0006mq-Ty for guile-devel@gnu.org; Wed, 04 Jan 2012 12:16:42 -0500 Original-Received: from fencepost.gnu.org ([140.186.70.10]:52579) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiUS5-0006mm-Qo for guile-devel@gnu.org; Wed, 04 Jan 2012 12:16:37 -0500 Original-Received: from adsl-75-0-186-252.dsl.pltn13.sbcglobal.net ([75.0.186.252]:62888 helo=[10.0.0.2]) by fencepost.gnu.org with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1RiUS5-0007Lw-IJ; Wed, 04 Jan 2012 12:16:37 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111220 Thunderbird/9.0 In-Reply-To: <87obujzmmc.fsf@Kagami.home> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.10 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:13269 Archived-At: On 01/04/12 04:19, Ian Price wrote: > ... As for mutable strings, I consider them > a mistake to begin with,... Let's step back and consider the whole point of Guile in the first place. My understanding is that one primary purpose is to be a facilitation language so that application developers have less to worry about and futz over. An extension language, if you like that phrase. As such, it would seem to me that a primary design goal would be to make the pathway as smooth as possible, rather than trying to emulate C and/or official Scheme language specs as closely as possible. To me, my primary concern is doing my little thing with the least total hassle. Having to study up on and thoroughly understand the Scheme language seems a lot harder than just using Perl (or what-have-you). Most scripting languages don't cut you off at the knees (change interfaces). So my main question is: Which is the higher priority, language purity or ease of use? The answer to that question answers several other things, like whether or not strings should be "allowed" to have high order bits set (not be pure ASCII) and whether or not to make read only strings be copy-on-write vs. fault-on-write. > We could add a compiler option to turn string literals into (string-copy > FOO). Perhaps that's the thing to do. No, because your clients have no control over how Guile gets built. We _do_ have control over startup code, however: (if (defined? 'set-copy-on-write-strings) (set-copy-on-write-strings #t)) Or, better, keep historical behavior and add: (if (defined? 'set-no-copy-on-write-strings) (set-no-copy-on-write-strings #t)) and fix the 1.9 bug (scribbling on shared strings) by making them copy-on-write thingys. Thank you.