From: Xavier Leroy <xavier.leroy@inria.fr>
To: Mattias Waldau <mattias.waldau@abc.se>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Non-mutable strings
Date: Thu, 10 Jan 2002 18:56:19 +0100 [thread overview]
Message-ID: <20020110185619.A20606@pauillac.inria.fr> (raw)
In-Reply-To: <AAEBJHFJOIPMMIILCEPBKEIBDGAA.mattias.waldau@abc.se>; from mattias.waldau@abc.se on Sat, Jan 05, 2002 at 12:19:45PM +0100
> I noted in the comments for Ocaml 3.02
> - Removed re-sharing of string literals, causes too many surprises with
> in-place string modifications.
> and therefor assumes that if I have a function like
> let foo x =
> "This is a string", x ;;
> will foo create a new string each time foo is called?
No, the string is still shared. What was removed in 3.02 is a
posteriori re-sharing of identical string literals in a compilation
unit. Consider:
let f () = "foo"
let g () = "foo"
In ocamlopt pre 3.02, we had f() == g(). Now, f() != g(). But we
still have f() == f().
> Assume that I know that no one will in-place edit the string, I could
> rewrite the code into the more efficient
>
> let str = "This is a string";;
> let foo x =
> str, x ;;
> and all calls to foo will get the same string.
No need to do this.
> If so, I wonder why not the standard strings of Ocaml are nonmutable?
> It works fine for languages like Visual Basic, and Visual Basic has
> great string performance compared to languages like C++.
If we were to start again from scratch, I'd consider immutable strings
seriously. Having mutable strings is handy when they are used as
character buffers, e.g. by low-level I/O functions. But I agree there
are advantages to distinguish (immutable) strings and (mutable)
character buffers.
- Xavier Leroy
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
next prev parent reply other threads:[~2002-01-10 17:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-04 2:55 [Caml-list] Stop at exception Magesh Kannan
2002-01-04 13:46 ` Xavier Leroy
2002-01-05 11:19 ` [Caml-list] Non-mutable strings Mattias Waldau
2002-01-05 22:01 ` YAMAGATA yoriyuki
2002-01-10 17:56 ` Xavier Leroy [this message]
2002-01-10 18:25 ` [Caml-list] Float and OCaml C interface Christophe Raffalli
2002-01-12 21:12 ` David Mentre
2002-01-12 21:32 ` David Mentre
2002-01-23 15:07 ` [Caml-list] " Xavier Leroy
2002-01-23 16:02 ` David Monniaux
2002-01-10 18:41 ` [Caml-list] Non-mutable strings Patrick M Doane
2002-01-10 18:50 ` Brian Rogoff
2002-01-13 20:05 ` Nicolas George
2002-01-16 19:22 ` Mattias Waldau
2002-01-17 9:56 ` YAMAGATA yoriyuki
2002-01-17 10:19 ` Jerome Vouillon
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020110185619.A20606@pauillac.inria.fr \
--to=xavier.leroy@inria.fr \
--cc=caml-list@inria.fr \
--cc=mattias.waldau@abc.se \
/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