From: David Rajchenbach-Teller <David.Teller@ens-lyon.org>
To: Zheng Li <zheng_li@users.sourceforge.net>
Cc: Goswin von Brederlow <goswin-v-b@web.de>,
Daniel Buenzli <daniel.buenzli@erratique.ch>,
OCaml List <caml-list@yquem.inria.fr>
Subject: Re: Strings
Date: Mon, 06 Apr 2009 11:20:23 +0200 [thread overview]
Message-ID: <1239009623.6058.28.camel@Blefuscu> (raw)
In-Reply-To: <49D8828C.40402@users.sourceforge.net>
On Sun, 2009-04-05 at 12:06 +0200, Zheng Li wrote:
> With phantom type alone, the abstraction can still leak.
Ok, it's actually not *immutable* strings but *read-only* strings. The
objective is to be able to distribute a text and make sure that the
client won't be able to modify it. The original owner can still decide
to enter "mutable-land" if they need it.
>
> ----
> # let ro_s = ro"asdf";;
> val ro_s : [ `Read ] Batteries.String.Cap.t = ro"asdf"
> # (to_string ro_s).[3] <- 'z';;
> ....
> ----
>
> however, with no covariants defined in batteries' String.Cap.t type
> (why?), the second example won't compile.
That's by design: [to_string] is the identity operation and it only
applies to strings for which you have both read and write capabilities.
If you wish to do what I believe you have in mind, you need to first
[copy] the string.
> The compiler simply doesn't
> allow me to print out a read-only string, nor does it allow many
> reasonable things like <<join ro"asdf" ro"jkl">> etc.
Er, how can you "not print out a read-only string"?
And for your [join] problem, well, works for me (as soon as you remember
that it takes as second argument a *list* of readable strings).
# print stdout (join ro";" [ro"1"; ro"2"; ro"3"]);;
1;2;3- : unit
Cheers,
David
next prev parent reply other threads:[~2009-04-06 9:19 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-03 11:56 Strings Jon Harrop
2009-04-03 12:25 ` [Caml-list] Strings Paolo Donadeo
2009-04-03 14:18 ` Ashish Agarwal
2009-04-03 14:46 ` Jon Harrop
2009-04-03 15:03 ` Daniel Bünzli
2009-04-03 16:52 ` Martin Jambon
2009-04-03 17:50 ` Daniel Bünzli
2009-04-03 19:46 ` Paolo Donadeo
2009-04-03 20:41 ` Harrison, John R
2009-04-04 10:11 ` Jon Harrop
2009-04-04 11:12 ` David Teller
2009-04-04 11:40 ` Jon Harrop
2009-04-04 12:34 ` David Rajchenbach-Teller
2009-04-18 12:31 ` Arkady Andrukonis
2009-04-04 10:13 ` Jon Harrop
2009-04-03 21:44 ` Goswin von Brederlow
2009-04-04 9:10 ` David Rajchenbach-Teller
2009-04-05 10:06 ` Strings Zheng Li
2009-04-06 9:20 ` David Rajchenbach-Teller [this message]
2009-04-06 10:07 ` Strings Goswin von Brederlow
2009-04-06 11:03 ` Strings Zheng Li
2009-04-04 17:11 ` [Caml-list] Strings Kuba Ober
2009-04-04 17:26 ` Jon Harrop
2009-04-05 20:54 ` Richard Jones
2009-04-05 23:40 ` Daniel Bünzli
2009-04-03 18:24 ` Florian Hars
2009-04-03 20:34 ` Arnaud Spiwack
2009-04-04 10:20 ` Jon Harrop
2009-04-04 9:14 ` David Rajchenbach-Teller
2009-04-04 9:26 ` Alp Mestan
2009-04-04 10:55 ` blue storm
2009-04-04 21:51 ` Goswin von Brederlow
2009-04-04 23:35 ` Yaron Minsky
2009-04-05 9:36 ` David Rajchenbach-Teller
2009-04-05 10:08 ` Alp Mestan
2009-04-05 21:41 ` Goswin von Brederlow
2009-04-05 21:40 ` Goswin von Brederlow
2009-04-05 2:55 ` Jon Harrop
2009-04-05 4:22 ` Edgar Friendly
2009-04-05 7:03 ` Goswin von Brederlow
2009-04-05 6:57 ` Goswin von Brederlow
2009-04-05 7:11 ` Jon Harrop
2009-04-04 10:11 ` Jon Harrop
2009-04-04 21:39 ` Goswin von Brederlow
2009-04-05 7:14 ` Romain Beauxis
2009-04-05 9:34 ` David Rajchenbach-Teller
2009-04-05 21:37 ` Goswin von Brederlow
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=1239009623.6058.28.camel@Blefuscu \
--to=david.teller@ens-lyon.org \
--cc=caml-list@yquem.inria.fr \
--cc=daniel.buenzli@erratique.ch \
--cc=goswin-v-b@web.de \
--cc=zheng_li@users.sourceforge.net \
/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