From: John Max Skaller <skaller@ozemail.com.au>
To: Alessandro Baretta <alex@baretta.com>
Cc: Oleg <oleg_inconnu@myrealbox.com>, Ocaml <caml-list@inria.fr>
Subject: Re: [Caml-list] Re: generic programming
Date: Fri, 05 Jul 2002 01:33:16 +1000 [thread overview]
Message-ID: <3D246ABC.9010306@ozemail.com.au> (raw)
In-Reply-To: <3D235FDE.6080203@baretta.com>
Alessandro Baretta wrote:
> Templates are "nasty" citizens of the C++ world. I've had *so* many
> problems tracking down bugs in code using STL templates. Basically,
> the "write once, compile many" strategy of C++ yields situations where
> the semantics of the algorithms coded in a template depends upon the
> type parameter you pass to the template itself. Abominable.
Well, it isn't that bad, but this:
"the semantics of the algorithms coded in a template depends upon
the type parameter you pass to the template"
is entirely correct: instantiation is not functorial (it doesn't
necessarily preserve the structure
of the algorithm represented in the template .. alternatively, you can
be 'nastier' and just
say that a template algorithm doesn' *have* any semantics).
FYI: as a member of the C++ committee I have fought long and hard to
limit the damage by trying to insist that the type parameters of a template
can only be bound to object types, and not 'const' or 'reference' types.
If you allow such bindings, the semantics are wildly indeterminate.
For example:
template<class T> T f(T t) { return t; }
f<int&>(x) // returns reference to x
is utterly unlike
f<int>(x) // returns copy of x
and one wonders what
template<class T> T &( T &t) { return t; }
means when instantiated like:
f<int&> // what type is int && ??
Before you can have parametric polymorphism,
you need a coherent type system .. :-)
--
John Max Skaller, mailto:skaller@ozemail.com.au
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850
-------------------
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:[~2002-07-04 15:33 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-03 2:49 [Caml-list] " Oleg
2002-07-03 8:37 ` [Caml-list] " Ketanu
2002-07-03 17:29 ` Chris Hecker
2002-07-03 20:07 ` Oleg
2002-07-03 20:34 ` Alessandro Baretta
2002-07-04 15:33 ` John Max Skaller [this message]
[not found] ` <3D249B27.5080807@baretta.com>
[not found] ` <3D25D27B.2020005@ozemail.com.au>
2002-07-07 20:42 ` Alessandro Baretta
2002-07-08 0:59 ` John Max Skaller
2002-07-08 7:29 ` Alessandro Baretta
2002-10-15 0:10 ` Eray Ozkural
2002-07-03 21:55 ` Peter Wood
2002-07-04 2:02 ` james woodyatt
2002-07-04 15:18 ` John Max Skaller
2002-07-05 8:42 ` Francois Pottier
2002-07-05 9:25 ` Xavier Leroy
2002-07-05 9:57 ` Chris Hecker
2002-07-05 13:54 ` Xavier Leroy
2002-07-05 17:59 ` Chris Hecker
2002-07-05 20:31 ` John Max Skaller
2002-07-05 19:33 ` John Max Skaller
2002-07-05 19:31 ` John Max Skaller
2002-07-05 8:33 ` Francois Pottier
2002-07-05 23:05 ` Dave Berry
2002-07-08 9:54 ` Francois Pottier
2002-07-08 15:49 ` John Max Skaller
2002-08-02 14:49 ` [Caml-list] Streams Diego Olivier Fernandez Pons
2002-08-02 15:29 ` Alain Frisch
2002-08-03 14:19 ` Diego Olivier Fernandez Pons
2002-07-03 8:42 ` [Caml-list] generic programming Johan Baltié
[not found] ` <002301c22270$fb4ca160$2be213c3@youngkouzdra>
[not found] ` <20020703092753.M39371@wanadoo.fr>
2002-07-05 10:38 ` Anton Moscal
2002-07-03 9:10 ` Jun P.FURUSE
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=3D246ABC.9010306@ozemail.com.au \
--to=skaller@ozemail.com.au \
--cc=alex@baretta.com \
--cc=caml-list@inria.fr \
--cc=oleg_inconnu@myrealbox.com \
/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