unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mike Gran <spk121@yahoo.com>
To: Mark H Weaver <mhw@netris.org>
Cc: Bruce Korb <bkorb@gnu.org>, "guile-devel@gnu.org" <guile-devel@gnu.org>
Subject: Re: Guile: What's wrong with this?
Date: Fri, 6 Jan 2012 05:37:55 -0800 (PST)	[thread overview]
Message-ID: <1325857075.77324.YahooMailNeo@web37903.mail.mud.yahoo.com> (raw)
In-Reply-To: <87wr95bo9y.fsf@netris.org>

> From: Mark H Weaver <mhw@netris.org>
 >>  It is curious that action of 'copy' really means the
>>  action of 'create a copy with different properties'.
>>   
>>  Shouldn't (string-copy "a") create another immutable string?
> 
> Why would you want to copy an immutable string?
> 
>>  Likewise, shouldn't (substring "abc" 1) return an immutable 
> substring?

I was being too snarky and rhetorical.  Gotta stop writing e-mail
before getting coffee.
 
To say something possibly semi-constructive...
 
The word 'string' in Scheme is overloaded to mean both string
immutables and string mutables.   Since a string immutable
can't be modified to be a mutable, they really are different
object types.  String mutables appear to still exist in the 
latest draft of R7RS. 
 
Many of the procedures that operate on strings will are overloaded
to take both immutables and mutables, but some, like string-set!
take only mutables.
 
There is an obvious syntax to construct a string immutable
object: namely to have it appear as a literal in the source code.
There thus isn't a need for a constructor function.
 
There is a need for a constructor function to create string mutables,
because a literal string in the source code indicates a string immutable.
 
There are such constructors: (string <char> ...) and (make-string k <char>)
which is fine.
 
But there is no constructor for a string mutable that initializes
it with a string in Guile 2.0.  There was in Guile 1.8, where
you could do (define <var-name> <string-literal>). 
 
So instead, syntactically, we now have to use 'string-copy' or 'substring'
for its *side-effects*, namely that it doesn't mark the copy immutable.
Those are rather poor and confusing names for constructors.
 
If making such a suggestion weren't pointless, I'd pitch the idea
of overloading 'string' or 'make-string' so they can be used as
a constructor of a string mutable.  Something like
(string <string-literal>) or (make-string <string-literal>).  This
would be clearer than using string-copy, I think.
 
Thanks,
 
Mike



  parent reply	other threads:[~2012-01-06 13:37 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 [this message]
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
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=1325857075.77324.YahooMailNeo@web37903.mail.mud.yahoo.com \
    --to=spk121@yahoo.com \
    --cc=bkorb@gnu.org \
    --cc=guile-devel@gnu.org \
    --cc=mhw@netris.org \
    /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).