From: Geoffrey Alan Washburn <geoffw@cis.upenn.edu>
To: caml-list@inria.fr
Subject: Re: Void type?
Date: Mon, 30 Jul 2007 00:44:29 -0400 [thread overview]
Message-ID: <46AD6CAD.7000500@cis.upenn.edu> (raw)
In-Reply-To: <46ACF35F.5070102@lix.polytechnique.fr>
Arnaud Spiwack wrote:
> Well, I don't really know why to use a void type in OCaml as well, thus
> my answer may be quite abstract. But when I provide a new type, I give a
> way to build it and a way to use it. In the case of the void type, there
> is no way to build an element of that type, but there is a way to use
> one such element : a void element can be used in place of any type.
I think this is a slightly, or perhaps merely subtly, misleading
characterization. A void type (0), not to be confused with "void" as
used by C, Java, etc. is a type without any inhabitants. It is the the
programming language equivalent of falsehood in logic. Dually, the unit
type (1), called "unit" in OCaml, has a single inhabitant and is the
programming language equivalent of truth in logic.
It is important to distinguish between a void element and the reasoning
principle provided by its elimination form. A term of type void cannot
be used in place of any type, but its elimination form which can be
realized as a function with the signature
val elim_void : void -> 'a
can be used to seemingly produce a value of any type.
However, most realistic programming languages are not usable as
consistent logics, and therefore have means to construct "proofs of
falsehood", that is expressions with a void type. If you are using a
type-safe language, unless you are subverting the type system, for
example by using Obj.magic, all of these "proofs" are usually a
diverging expression or one that makes use of some kind of control
transfer such as an abort, invoking continuation, or raising an
exception. So any implementation of elim_void will never actually
return a value of any type.
Elements of a "bottom" type more closely model something that may be
used at any type. Bottom types show up more often in languages with
subtyping, where they are subtypes of all types. The null value in
Java, while not having an explicit type of its own (to my knowledge) is
a good example of a bottom element.
Hopefully this clarifies some confusion and conflation going on in this
thread.
next prev parent reply other threads:[~2007-07-30 4:44 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-28 4:14 Stefan Monnier
2007-07-28 4:33 ` [Caml-list] " Erik de Castro Lopo
2007-07-28 4:51 ` Chris King
2007-07-28 18:49 ` Stefan Monnier
2007-07-28 18:53 ` Basile STARYNKEVITCH
2007-07-29 0:48 ` Stefan Monnier
2007-07-28 18:57 ` Arnaud Spiwack
2007-07-28 6:12 ` Daniel de Rauglaudre
2007-07-28 6:15 ` Chung-chieh Shan
2007-07-28 8:22 ` [Caml-list] " rossberg
2007-07-29 6:31 ` Chung-chieh Shan
2007-07-29 11:05 ` [Caml-list] " Arnaud Spiwack
2007-07-29 11:16 ` Jon Harrop
2007-07-29 11:36 ` Arnaud Spiwack
2007-07-29 12:43 ` Richard Jones
2007-07-29 12:58 ` Arnaud Spiwack
2007-07-29 17:02 ` Richard Jones
2007-07-29 20:06 ` Arnaud Spiwack
2007-07-29 22:55 ` Brian Hurt
2007-07-30 4:40 ` skaller
2007-07-30 23:13 ` Brian Hurt
2007-07-31 8:52 ` Richard Jones
2007-07-31 13:08 ` Chris King
2007-07-31 15:27 ` Markus Mottl
2007-08-01 11:37 ` Tom
2007-08-01 16:23 ` Markus Mottl
2007-07-30 4:44 ` Geoffrey Alan Washburn [this message]
2007-07-30 13:11 ` Brian Hurt
2007-07-30 13:32 ` Christopher L Conway
2007-07-30 13:35 ` Geoffrey Alan Washburn
2007-07-30 13:41 ` [Caml-list] " Chris King
2007-07-30 17:43 ` Christophe Raffalli
2007-07-30 17:58 ` Markus Mottl
2007-07-30 14:27 ` Jeff Polakow
2007-07-28 7:58 ` Sébastien Hinderer
2007-07-28 8:13 ` [Caml-list] " Basile STARYNKEVITCH
2007-07-28 12:29 ` Christophe TROESTLER
2007-07-28 13:36 ` Brian Hurt
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=46AD6CAD.7000500@cis.upenn.edu \
--to=geoffw@cis.upenn.edu \
--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