From: brogoff@speakeasy.net
To: William Lovas <wlovas@stwing.upenn.edu>
Cc: "caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [oliver: Re: [Caml-list] Strings as arrays or lists...]
Date: Mon, 3 Mar 2003 16:39:50 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.44.0303031614420.9492-100000@grace.speakeasy.net> (raw)
In-Reply-To: <20030303210554.GA5245@force.stwing.upenn.edu>
On Mon, 3 Mar 2003, William Lovas wrote:
> On Mon, Mar 03, 2003 at 12:10:45PM -0800, brogoff@speakeasy.net wrote:
> > That's why I said "Agitate for extensional polyorphism!". You really want a
> > way to overload similar notations. As you must now know, OCaml has no
> > overloading. Extensional polymorphism gives you that overloading, on top of
> > ML, in a way that even people who hate overloading should find fairly
> > nonthreatening.
>
> You keep skirting around this question by saying that what he really wants
> is extensional polymorphism, but overloading is not the only way to get the
> same syntax for strings and arrays. Another way is to have them simply *be
> the same thing*. That is, is there any deep reason not to do
>
> type string = char array
Because strings are packed, and OCaml has no facility for expressing that the
char array should be packed. I mentioned Clean earlier, and I'm pretty sure I
mentioned that Clean strings are UNBOXED arrays of characters. No way to express
that in OCaml now. If you really want that, you would ask for Bigarrays instead
of arrays, but there may be performance problems there, as the Bigarray
representation is tuned for different uses.
> right up front, and inherit all the Array module's functions? We could
> still keep a String library with all string-specific functions in it, but
> we'd gain a unification of many function implementations, and the same
> notation for random access to boot.
Even if this were a good idea, which I don't think it is, I'd probably still
have an Array module and a String module with different interfaces. The
similarity between Arrays and Strings is that their elements are accessed by
integers in constant time.
> You mentioned that strings are packed -- meaning that they're more
> efficient than generic arrays?
It means that characters are packed; which means that you can put more of them
into the array, which means that strings can be bigger than arrays. Of course,
if we had 32bit chars that wouldn't be true.
> But doesn't O'Caml already have compiler
> magic for making float arrays fast and efficient?
Yup.
> Why not just do the same thing for char arrays?
Compiler complexity? I'll let an implementor answer, if they're not already
bored to tears by this thread. I understand what you want, and if it were no
problem to just pack everything, that would be great, but I think it's a bit
more complex than that.
> You indicated towards the end of your email that you feel that strings and
> arrays are different enough to warrant different representations,
Actually, no. I indicated that they are different enough to warrant different
interfaces, though I suppose from there you could infer from that that different
representations may be warranted as well.
In fact, as I stated earlier (I hope?), I don't think one, single string
representation will satisfy everyone. It certainly won't satisfy me, and I'm
only one person. Given that, and given that I do understand the OP's desire to
share notation, I think some amount of overloading would be a good
way to address this problem, as well as many others. Aren't hash tables kind of
like arrays too? Can't we use the same notation to access them as for arrays and
strings? Ditto for association lists. The tool for addressing this problem is
overloading (of the access function), not shoehorning all of these things into
one representation.
> What's the good reason for separating these two ideas
> that are clearly very similar in interface, and probably not too different
> in implementation?
I don't think they're all that similar in interface. I do agree with you that
the representations could be pretty close though, at least for the simplest kind
of string. But ropes (for example) have a very different representation than
simple strings, yet an almost identical interface. What to do?
-- Brian
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2003-03-04 0:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-03 18:28 Oliver Bandel
2003-03-03 20:10 ` brogoff
2003-03-03 21:05 ` William Lovas
2003-03-03 21:32 ` Basile STARYNKEVITCH
2003-03-03 22:10 ` [Caml-list] [RANT] String representation (was: Strings as arrays or lists...) Nicolas George
2003-03-04 12:43 ` Diego Olivier Fernandez Pons
2003-03-04 16:14 ` William D. Neumann
2003-03-04 18:38 ` Xavier Leroy
2003-03-04 18:50 ` William D. Neumann
2003-03-04 19:01 ` Nicolas George
[not found] ` <Pine.A41.4.44.0303041312560.4431978-100000@ibm1.cicrp.juss ieu.fr>
2003-03-04 13:49 ` David Chase
2003-03-04 0:20 ` [oliver: Re: [Caml-list] Strings as arrays or lists...] Issac Trotts
2003-03-04 0:24 ` Alain.Frisch
2003-03-04 1:06 ` Issac Trotts
2003-03-04 0:39 ` Olivier Andrieu
2003-03-04 0:39 ` brogoff [this message]
2003-03-03 21:40 ` [Caml-list] extensional polymorphism james woodyatt
2003-03-04 1:10 ` brogoff
2003-03-04 2:04 ` james woodyatt
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=Pine.LNX.4.44.0303031614420.9492-100000@grace.speakeasy.net \
--to=brogoff@speakeasy.net \
--cc=caml-list@inria.fr \
--cc=wlovas@stwing.upenn.edu \
/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