From: nalaginrut <nalaginrut@gmail.com>
To: Mike Gran <spk121@yahoo.com>
Cc: "Ludovic Courtès" <ludo@gnu.org>,
"guile-devel@gnu.org" <guile-devel@gnu.org>
Subject: Re: Guile: What's wrong with this?
Date: Wed, 04 Jan 2012 17:35:16 +0800 [thread overview]
Message-ID: <1325669716.3100.16.camel@Renee-desktop> (raw)
In-Reply-To: <1325646278.7597.YahooMailNeo@web37902.mail.mud.yahoo.com>
> > In many systems it is desirable for constants (i.e. the values of literal
> > expressions) to reside in read-only-memory. To express this, it is
> > convenient to imagine that every object that denotes locations is
> > associated with a flag telling whether that object is mutable or immutable.
> > In such systems literal constants and the strings returned by
> > `symbol->string' are immutable objects, while all objects created by
> > the other procedures listed in this report are mutable. It is an error
> > to attempt to store a new value into a location that is denoted by an
> > immutable object.
> >
> > In Guile this has been the case since commit
> > 190d4b0d93599e5b58e773dc6375054c3a6e3dbf.
> >
> > The reason for this is that Guile’s compiler tries hard to avoid
> > duplicating constants in the output bytecode. Thus, modifying a
> > constant would actually change all other occurrences of that constant in
> > the code, making it a non-constant. ;-)
>
> This is a terrible example of the RnRS promoting some strange idea of
> mathematical purity over being useful.
>
> The idea that the correct way to initialize a string is
> (define x (string-copy "string")) is awkward. "string" is a read-only
> but copying it makes it modifyiable? Copying implies mutability?
>
> Copying doesn't imply modifying mutability in any other data type.
>
> Why not change the behavior 'define' to be (define y (substring str 0)) when STR
> is a read-only string? This would preserve the shared memory if the variable is never
> modified but still make the string copy-on-write.
>
> Regards,
>
> Mike
>
Hi guys! I just pass by and see your dispute.
I have been confused by the new immutable string design. But I used a
macro "make-mutable-string" which hide string-copy for an abstraction.
Anyway, if the efficiency would be an issue, one may choose bytevector
to implement "make-mutable-string". And it's easy to substitute with
sed.
BTW, can't we make an efficient "mutable-string" module for an
alternative? Just like old version. I mean it could be a Guile specific
feature.
--
GNU Powered it
GPL Protected it
GOD Blessed it
HFG - NalaGinrut
--hacker key--
v4sw7CUSMhw6ln6pr8OSFck4ma9u8MLSOFw3WDXGm7g/l8Li6e7t4TNGSb8AGORTDLMen6g6RASZOGCHPa28s1MIr4p-x hackerkey.com
---end key---
next prev parent reply other threads:[~2012-01-04 9:35 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-03 4:08 What's wrong with this? Bruce Korb
2012-01-03 15:03 ` Mike Gran
2012-01-03 16:26 ` Guile: " Bruce Korb
2012-01-03 16:30 ` Mike Gran
2012-01-03 22:24 ` Ludovic Courtès
2012-01-03 23:15 ` Bruce Korb
2012-01-03 23:33 ` Ludovic Courtès
2012-01-04 0:55 ` Bruce Korb
2012-01-04 3:12 ` Noah Lavine
2012-01-04 17:37 ` bytevector -- was: " Bruce Korb
2012-01-04 21:17 ` Ludovic Courtès
2012-01-04 22:36 ` Bruce Korb
2012-01-05 0:01 ` Ludovic Courtès
2012-01-05 18:36 ` non-reproduction of initial issue -- was: " Bruce Korb
2012-01-05 18:50 ` Mark H Weaver
2012-01-04 12:19 ` Ian Price
2012-01-04 17:16 ` Bruce Korb
2012-01-04 17:21 ` Andy Wingo
2012-01-04 17:39 ` David Kastrup
2012-01-04 21:52 ` Ian Price
2012-01-04 22:18 ` Bruce Korb
2012-01-04 23:22 ` Mike Gran
2012-01-04 23:59 ` Mark H Weaver
2012-01-05 17:22 ` Bruce Korb
2012-01-05 18:13 ` Mark H Weaver
2012-01-05 19:02 ` Mark H Weaver
2012-01-05 20:24 ` David Kastrup
2012-01-05 22:42 ` Mark H Weaver
2012-01-06 1:02 ` Mike Gran
2012-01-06 1:41 ` Mark H Weaver
2012-01-06 2:38 ` Noah Lavine
2012-01-06 13:37 ` Mike Gran
2012-01-06 14:11 ` David Kastrup
2012-01-06 18:13 ` Mark H Weaver
2012-01-06 19:06 ` Bruce Korb
2012-01-06 19:19 ` David Kastrup
2012-01-06 20:03 ` Mark H Weaver
2012-01-07 16:13 ` Mark H Weaver
2012-01-07 17:35 ` mutable interfaces - was: " Bruce Korb
2012-01-07 17:47 ` David Kastrup
2012-01-07 18:30 ` Mark H Weaver
2012-01-07 18:55 ` Mark H Weaver
2012-01-06 22:23 ` Guile BUG: " Bruce Korb
2012-01-06 23:11 ` Mark H Weaver
2012-01-06 23:35 ` Andy Wingo
2012-01-06 23:41 ` Bruce Korb
2012-01-07 15:00 ` Mark H Weaver
2012-01-07 15:27 ` Bruce Korb
2012-01-07 16:38 ` Mark H Weaver
2012-01-07 17:39 ` Bruce Korb
2012-01-09 15:41 ` Mark H Weaver
2012-01-09 17:27 ` Bruce Korb
2012-01-09 18:32 ` Andy Wingo
2012-01-09 19:48 ` Bruce Korb
2012-01-07 15:47 ` David Kastrup
2012-01-07 17:07 ` Mark H Weaver
2012-01-07 14:35 ` Mark H Weaver
2012-01-07 15:20 ` Mike Gran
2012-01-07 22:25 ` Ludovic Courtès
2012-01-10 9:13 ` The empty string and other empty strings Ludovic Courtès
2012-01-10 11:28 ` Mike Gran
2012-01-10 13:03 ` Mark H Weaver
2012-01-10 13:09 ` Mike Gran
2012-01-10 15:41 ` Mark H Weaver
2012-01-10 15:48 ` David Kastrup
2012-01-10 16:15 ` Mark H Weaver
2012-01-12 22:33 ` Ludovic Courtès
2012-01-13 9:27 ` David Kastrup
2012-01-13 16:39 ` Mark H Weaver
2012-01-13 17:36 ` David Kastrup
2012-01-16 8:26 ` Marijn
2012-01-16 8:47 ` David Kastrup
2012-01-20 21:31 ` Andy Wingo
2012-01-10 14:10 ` David Kastrup
2012-01-10 12:21 ` Mike Gran
2012-01-10 12:27 ` Mark H Weaver
2012-01-10 16:34 ` Ludovic Courtès
2012-01-10 17:04 ` David Kastrup
2012-01-06 23:28 ` Guile BUG: What's wrong with this? Bruce Korb
2012-01-07 20:57 ` Guile: " Ian Price
2012-01-08 5:05 ` Mark H Weaver
2012-01-06 9:23 ` David Kastrup
2012-01-05 7:22 ` David Kastrup
2012-01-04 22:46 ` Ludovic Courtès
2012-01-04 3:04 ` Mike Gran
2012-01-04 9:35 ` nalaginrut [this message]
2012-01-04 9:41 ` David Kastrup
2012-01-04 21:07 ` Ludovic Courtès
2012-01-04 10:03 ` Mark H Weaver
2012-01-04 14:29 ` Mike Gran
2012-01-04 14:45 ` David Kastrup
2012-01-04 16:47 ` Andy Wingo
2012-01-04 17:14 ` David Kastrup
2012-01-04 17:32 ` Andy Wingo
2012-01-04 17:49 ` David Kastrup
2012-01-04 18:09 ` Andy Wingo
2012-01-04 17:30 ` Bruce Korb
2012-01-04 17:44 ` David Kastrup
2012-01-04 18:26 ` Ian Price
2012-01-04 18:48 ` Mark H Weaver
2012-01-04 19:29 ` Bruce Korb
2012-01-04 20:20 ` David Kastrup
2012-01-04 23:19 ` Mark H Weaver
2012-01-04 23:28 ` Bruce Korb
2012-01-07 15:43 ` Fixed string corruption bugs (was Guile: What's wrong with this?) Mark H Weaver
2012-01-07 16:19 ` Fixed string corruption bugs Andy Wingo
2012-01-04 18:31 ` Guile: What's wrong with this? Mark H Weaver
2012-01-04 18:43 ` Andy Wingo
2012-01-04 19:29 ` Mark H Weaver
2012-01-04 19:43 ` Andy Wingo
2012-01-04 20:08 ` Bruce Korb
2012-01-04 20:14 ` David Kastrup
2012-01-04 20:56 ` Andy Wingo
2012-01-04 21:30 ` Bruce Korb
2012-01-04 17:19 ` Mark H Weaver
2012-01-05 4:24 ` Mark H Weaver
2012-01-04 22:37 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1325669716.3100.16.camel@Renee-desktop \
--to=nalaginrut@gmail.com \
--cc=guile-devel@gnu.org \
--cc=ludo@gnu.org \
--cc=spk121@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).