From: Jon Harrop <jdh30@cam.ac.uk>
To: caml-list@inria.fr
Subject: Re: [Caml-list] [ANN] The Missing Library
Date: Wed, 28 Apr 2004 06:13:19 +0100 [thread overview]
Message-ID: <200404280613.19547.jdh30@cam.ac.uk> (raw)
In-Reply-To: <Pine.LNX.4.44.0404272326450.9460-100000@localhost.localdomain>
On Wednesday 28 April 2004 5:31 am, Brian Hurt wrote:
> It's been too long since I've used the STL- what data structures and
> algorithms does it provide?
The main thing is that it is iterator-centric, so you pass iterators around
instead of containers. For example, to represent a subarray without having to
copy it. These iterators are classified according to their abilities (e.g.
trivial, forward, random-access etc.). I think these classifications are
theoretical - a C++ compiler can't enforce them so if a program misuses an
iterator then trying to compile it will often produce 10 pages of
gobbledygook errors pointing into the standard library.
This is quite useful for 1D containers, which the STL provides (list, slist,
vector, deque), but it doesn't lend itself well to many useful containers
(trees, matrices, higher-dimensional arrays) which exhibit more interesting
connectivities than a bidirectional iterator can represent and which do not
exhibit a clear notion of "sub".
So you get things like an STL set, implemented using red-black trees, which is
actually an ordered set and which lets you insert and delete elements,
iterate through them, all the usual stuff. They chose to use semi-inclusive
bound (e.g. "[a,b)") and, consequently, you typically had an "end" iterator
which pointed beyond the end of the container (equivalent to the NULL pointer
in a C list, in raw terms).
I often found myself using a "typedef" to give my current favourite STL
container a new name which a bunch of my code could then use. When I felt
that another container type was trendy enough to switch to, I'd just change
the "typedef" line. That's actually quite useful for trying out different
data structures for performance etc.
The STL also provided data structures (e.g. valarray, complex) which were
intended to be used for high-performance numerics. But this was horribly
misguided as, basically, you can't do decent optimisation on those without
them being built-in types. The Blitz++ library went some way to addressing
this by (ab)using the (Turing complete!) template type system to perform
partial specialisations and AST optimisations on expressions. But then
everyone realised that was just too nasty, and it died a death.
I'm not saying that these things can't be done in ocaml, just that you can do
them easily in C++ using the STL. I'd be very interested to hear ocaml
equivalents though! If you want to know more about the STL then I suggest you
refer back to Stepanov's ramblings, rather than looking at the "standard"
which was, unfortunately, bastardised by a committee...
Cheers,
Jon.
-------------------
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:[~2004-04-28 5:17 UTC|newest]
Thread overview: 199+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-23 18:51 John Goerzen
2004-04-23 19:52 ` Kenneth Knowles
2004-04-23 20:09 ` Alexander V. Voinov
2004-04-23 20:27 ` John Goerzen
2004-04-23 20:23 ` John Goerzen
2004-04-23 20:36 ` Maxence Guesdon
2004-04-23 21:10 ` John Goerzen
2004-04-23 21:12 ` Maxence Guesdon
2004-04-23 21:18 ` Maxence Guesdon
2004-04-23 21:32 ` Nicolas Cannasse
2004-04-23 21:46 ` John Goerzen
2004-04-23 21:58 ` Maxence Guesdon
2004-04-24 8:15 ` Matthieu BRUCHER
2004-04-24 8:15 ` Maxence Guesdon
2004-04-23 21:36 ` John Goerzen
2004-04-23 21:33 ` John Goerzen
2004-04-23 22:04 ` Alain.Frisch
2004-04-24 4:26 ` John Goerzen
2004-04-24 8:13 ` Alain.Frisch
2004-04-24 9:28 ` Nicolas Cannasse
2004-04-25 8:56 ` Common IO structure (was Re: [Caml-list] [ANN] The Missing Library) Yamagata Yoriyuki
2004-04-25 11:54 ` Gerd Stolpmann
2004-04-26 14:53 ` [Caml-list] Re: Common IO structure Yamagata Yoriyuki
2004-04-26 21:02 ` Gerd Stolpmann
2004-04-25 19:42 ` Common IO structure (was Re: [Caml-list] [ANN] The Missing Library) Nicolas Cannasse
2004-04-26 13:16 ` [Caml-list] Re: Common IO structure Yamagata Yoriyuki
2004-04-26 13:53 ` Jacques GARRIGUE
2004-04-26 14:26 ` Nicolas Cannasse
2004-04-28 6:52 ` Jacques GARRIGUE
2004-04-26 14:23 ` Nicolas Cannasse
2004-04-26 14:55 ` skaller
2004-04-26 15:26 ` Yamagata Yoriyuki
2004-04-26 19:28 ` Nicolas Cannasse
2004-04-26 20:56 ` Gerd Stolpmann
2004-04-26 21:14 ` John Goerzen
2004-04-26 22:32 ` Gerd Stolpmann
2004-04-26 21:52 ` Benjamin Geer
2004-04-27 16:00 ` Yamagata Yoriyuki
2004-04-27 21:51 ` Gerd Stolpmann
2004-04-27 19:08 ` Nicolas Cannasse
2004-04-27 22:22 ` Gerd Stolpmann
2004-04-28 7:42 ` Nicolas Cannasse
2004-04-29 10:13 ` Yamagata Yoriyuki
2004-04-27 15:43 ` Yamagata Yoriyuki
2004-04-27 16:17 ` Nicolas Cannasse
2004-04-27 16:58 ` Yamagata Yoriyuki
2004-04-27 23:35 ` Benjamin Geer
2004-04-28 3:44 ` John Goerzen
2004-04-28 13:01 ` Richard Jones
2004-04-28 21:30 ` Benjamin Geer
2004-04-28 21:44 ` John Goerzen
2004-04-28 22:41 ` Richard Jones
2004-04-29 11:51 ` Benjamin Geer
2004-04-29 12:03 ` Richard Jones
2004-04-29 15:16 ` Benjamin Geer
2004-04-29 10:27 ` Yamagata Yoriyuki
2004-04-29 13:03 ` John Goerzen
2004-04-29 13:40 ` Yamagata Yoriyuki
2004-04-29 14:02 ` John Goerzen
2004-04-29 15:31 ` Yamagata Yoriyuki
2004-04-29 17:31 ` james woodyatt
2004-04-29 23:53 ` Benjamin Geer
2004-04-30 4:10 ` james woodyatt
2004-04-29 11:23 ` Benjamin Geer
2004-04-29 12:23 ` Richard Jones
2004-04-29 15:10 ` Benjamin Geer
2004-04-29 15:35 ` John Goerzen
2004-04-29 15:46 ` Benjamin Geer
2004-04-29 15:58 ` Richard Jones
2004-04-29 20:41 ` John Goerzen
2004-04-29 22:35 ` Benjamin Geer
2004-05-01 14:37 ` Brian Hurt
2004-04-29 13:23 ` John Goerzen
2004-04-29 14:12 ` John Goerzen
2004-04-29 15:37 ` Benjamin Geer
2004-04-28 7:05 ` Nicolas Cannasse
2004-04-28 0:20 ` skaller
2004-04-28 3:39 ` John Goerzen
2004-04-28 13:04 ` Richard Jones
2004-04-24 9:40 ` [Caml-list] [ANN] The Missing Library Oliver Bandel
2004-04-23 22:54 ` Henri DF
2004-04-23 23:11 ` Shawn Wagner
2004-04-25 6:55 ` james woodyatt
2004-04-25 7:56 ` Brandon J. Van Every
2004-04-25 11:50 ` Benjamin Geer
2004-04-25 13:55 ` skaller
2004-04-26 12:08 ` Martin Berger
2004-04-26 12:51 ` skaller
2004-04-26 14:49 ` skaller
2004-04-28 4:31 ` Brian Hurt
2004-04-28 5:13 ` Jon Harrop [this message]
2004-04-28 8:37 ` skaller
2004-04-28 9:18 ` Jon Harrop
2004-04-28 11:24 ` skaller
2004-04-28 15:18 ` John Goerzen
2004-04-28 16:28 ` skaller
2004-04-28 18:02 ` John Goerzen
2004-04-29 0:54 ` skaller
2004-04-29 11:57 ` Andreas Rossberg
2004-04-29 13:38 ` John Goerzen
2004-04-28 18:42 ` Jon Harrop
2004-04-29 1:03 ` skaller
2004-04-29 1:56 ` Jon Harrop
2004-04-29 2:35 ` skaller
2004-04-29 3:00 ` skaller
2004-04-29 5:04 ` Jon Harrop
2004-04-29 5:38 ` skaller
2004-04-29 5:47 ` james woodyatt
2004-04-29 12:05 ` Andreas Rossberg
2004-04-28 17:07 ` james woodyatt
2004-04-28 17:31 ` skaller
2004-05-03 0:02 ` Marcin 'Qrczak' Kowalczyk
2004-05-03 7:54 ` skaller
2004-05-03 8:58 ` Marcin 'Qrczak' Kowalczyk
2004-05-03 10:58 ` skaller
2004-05-03 12:40 ` Marcin 'Qrczak' Kowalczyk
2004-05-03 13:04 ` Nicolas Cannasse
2004-05-03 14:24 ` brogoff
2004-05-03 15:26 ` Marcin 'Qrczak' Kowalczyk
2004-05-03 15:08 ` skaller
2004-05-03 16:00 ` Marcin 'Qrczak' Kowalczyk
2004-05-03 11:32 ` [Caml-list] Re: Tail-calls in C code (was: [ANN] The Missing Library) Wolfgang Lux
2004-05-03 12:34 ` skaller
2004-05-03 12:38 ` skaller
2004-05-03 12:55 ` skaller
2004-05-03 13:02 ` Marcin 'Qrczak' Kowalczyk
2004-04-28 15:15 ` [Caml-list] [ANN] The Missing Library John Goerzen
2004-04-28 20:43 ` Jon Harrop
2004-04-30 15:58 ` Brian Hurt
2004-05-01 2:48 ` skaller
2004-04-28 8:24 ` skaller
2004-04-28 8:42 ` Martin Berger
2004-04-28 11:38 ` skaller
2004-04-28 16:07 ` [Caml-list] " Shivkumar Chandrasekaran
2004-04-28 11:31 ` [Caml-list] " Yaron M. Minsky
2004-04-28 12:09 ` skaller
2004-04-28 12:36 ` Nicolas Cannasse
2004-04-28 13:39 ` skaller
2004-04-28 14:02 ` Nicolas Cannasse
2004-04-28 15:34 ` skaller
2004-04-28 13:15 ` Jean-Christophe Filliatre
2004-04-28 14:31 ` skaller
2004-04-28 14:40 ` Jean-Christophe Filliatre
2004-04-28 15:51 ` skaller
2004-04-28 13:29 ` Andreas Rossberg
2004-04-28 16:10 ` [Caml-list] " Shivkumar Chandrasekaran
2004-04-28 17:14 ` skaller
2004-04-28 17:34 ` Shivkumar Chandrasekaran
2004-04-28 20:00 ` Jon Harrop
2004-04-25 12:20 ` [Caml-list] " Benjamin Geer
2004-04-25 14:06 ` skaller
2004-04-25 15:07 ` Benjamin Geer
2004-04-26 0:19 ` skaller
2004-04-23 22:08 ` Basile STARYNKEVITCH
2004-04-24 4:40 ` John Goerzen
2004-04-24 10:10 ` Oliver Bandel
2004-04-24 19:31 ` skaller
2004-04-23 20:54 ` Kenneth Knowles
2004-04-23 21:07 ` John Goerzen
2004-04-25 15:43 ` Brian Hurt
2004-04-26 0:22 ` skaller
2004-04-28 4:10 ` Brian Hurt
2004-04-26 6:48 ` Florian Hars
2004-04-23 20:41 ` Eric C. Cooper
2004-04-23 21:16 ` John Goerzen
2004-04-23 22:28 ` Shawn Wagner
2004-04-23 22:37 ` Kenneth Knowles
2004-04-23 23:16 ` Shawn Wagner
2004-04-24 1:38 ` [Caml-list] ocamlopt -pack portability John Carr
2004-04-24 10:31 ` Oliver Bandel
2004-04-24 16:53 ` John Carr
2004-04-24 4:46 ` [Caml-list] [ANN] The Missing Library John Goerzen
2004-04-24 2:43 ` Yamagata Yoriyuki
2004-04-24 9:19 ` Nicolas Cannasse
2004-04-24 12:27 ` Shawn Wagner
2004-04-24 12:58 ` Alain.Frisch
2004-04-24 17:36 ` Nicolas Cannasse
2004-04-26 14:49 ` Florian Hars
2004-04-24 2:44 ` Yamagata Yoriyuki
2004-04-24 4:51 ` John Goerzen
2004-04-24 5:11 ` Jon Harrop
2004-04-24 12:59 ` Proposal: community standard library project (was: Re: [Caml-list] [ANN] The Missing Library) Benjamin Geer
2004-04-24 17:29 ` [Caml-list] RE: Proposal: community standard library project Brandon J. Van Every
2004-04-24 18:23 ` Benjamin Geer
2004-04-25 4:37 ` Brandon J. Van Every
2004-04-26 1:45 ` [Caml-list] " Jacques GARRIGUE
2004-04-26 3:03 ` Brandon J. Van Every
2004-04-26 7:43 ` Martin Jambon
2004-04-26 18:25 ` Benjamin Geer
2004-04-26 19:37 ` Gerd Stolpmann
2004-04-26 20:24 ` skaller
2004-04-26 20:39 ` John Goerzen
2004-04-26 22:17 ` Brandon J. Van Every
2004-04-27 9:06 ` skaller
2004-04-27 9:35 ` Alain.Frisch
2004-04-27 11:29 ` Gerd Stolpmann
2004-04-27 12:52 ` skaller
2004-04-27 18:13 ` [Caml-list] CVS labeling (was Re: Proposal: community standard library project) Brandon J. Van Every
2004-04-27 18:53 ` John Goerzen
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=200404280613.19547.jdh30@cam.ac.uk \
--to=jdh30@cam.ac.uk \
--cc=caml-list@inria.fr \
/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