From: Mark Wotton <mrak@cs.usyd.edu.au>
To: Clemens Hintze <cle-ocaml@qiao.in-berlin.de>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Re: [Q]: Co(ntra)variance and subtyping?
Date: Sun, 18 Nov 2001 10:17:51 +1100 (EST) [thread overview]
Message-ID: <Pine.LNX.4.21.0111181004180.6020-100000@hons.cs.usyd.edu.au> (raw)
In-Reply-To: <20011117185051.A7607@qiao.in-berlin.de>
On Sat, 17 Nov 2001, Clemens Hintze wrote:
> - Covariance means that a specialized class also specialize the
> arguments of overloaded methods. You use 'narrow' instead of
> 'specializing' ...
> - Contravariance, however, is generalizing arguments of overloaded
> methods in specialized classes.
>
> So in this light, your example should demonstrate covariance, isn't
> it? But what I do not like in the explanation above, is that it also
> only refer to OOP and not types.
You're quite right. I had it the wrong way around. Too little sleep...
> Another explanation I've found, was (a --> b means a subtypes b):
>
> - Covariance means, that if t' --> t ==> t' list --> t list
With this relationship, you would expect that "t' list" would be able to
do anything that "t list" could do, as it's a subtype: therefore, you'd
expect to be able to add a t to the front. With covariance, you
can't: it's expecting the more specialised type t'.
> - Contravariance, however, if t' --> t ==> t list --> t' list
This way, you can take "t list" and add either "t" or "t'" to the
front. Therefore, "t list" can do anything that "t' list" can, and the
intuitive notion of subtypes is preserved.
Apologies for getting it wrong the first time. It's doubly embarrassing as
it seems I made the same mistake in the thesis I just handed in...
mrak
-------------------
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:[~2001-11-17 23:18 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-16 19:37 [Caml-list] " Clemens Hintze
2001-11-17 14:18 ` Mark Wotton
2001-11-17 14:55 ` Mark Wotton
2001-11-17 17:50 ` [Caml-list] " Clemens Hintze
2001-11-17 23:17 ` Mark Wotton [this message]
2001-11-18 9:16 ` Clemens Hintze
2001-11-18 13:18 ` Alain Frisch
2001-11-19 9:54 ` Remi VANICAT
[not found] ` <9t7v4d$gij$1@qrnik.zagroda>
2001-11-18 11:57 ` Marcin 'Qrczak' Kowalczyk
2001-11-18 13:34 ` [Caml-list] " Andreas Rossberg
2001-11-18 21:22 ` Pixel
2001-11-19 0:33 ` Jacques Garrigue
2001-11-18 22:35 ` David Gurr
2001-11-19 7:24 ` [Caml-list] " Clemens Hintze
2001-11-19 12:03 ` Markus Mottl
2001-11-19 8:29 ` [Caml-list] " Xavier Leroy
2001-11-19 11:03 ` Alain Frisch
2001-11-20 9:58 ` Didier Remy
2001-11-19 11:14 ` Pixel
2001-11-18 22:30 ` [Caml-list] Re: variance, subtyping and monads... oh, my! james woodyatt
2001-11-19 8:11 ` Francois Pottier
2001-11-19 9:02 ` james woodyatt
2001-11-19 9:58 ` Markus Mottl
2001-11-19 20:47 ` james woodyatt
2001-11-19 12:56 ` Frank Atanassow
2001-11-19 10:39 ` Andreas Rossberg
2001-11-19 12:21 ` Markus Mottl
2001-11-19 13:43 ` [Caml-list] Kylix and OCaml Christophe Raffalli
2001-11-20 2:05 ` Vitaly Lugovsky
2001-11-20 8:51 ` Christophe Raffalli
2001-11-22 1:42 ` Vitaly Lugovsky
2001-11-20 10:00 ` Benjamin Monate
2001-11-20 10:24 ` [Caml-list] [Bug in an interface between C++ and OCAML due to some pointer encapsulation] Sylvain Kerjean
2001-11-20 12:14 ` [Caml-list] Kylix and OCaml Maxence Guesdon
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.21.0111181004180.6020-100000@hons.cs.usyd.edu.au \
--to=mrak@cs.usyd.edu.au \
--cc=caml-list@inria.fr \
--cc=cle-ocaml@qiao.in-berlin.de \
/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