From: Christophe Raffalli <Christophe.Raffalli@univ-savoie.fr>
To: Guillaume Marceau <gmarceau@cs.brown.edu>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] about -rectypes
Date: Tue, 11 Mar 2003 17:47:24 +0100 [thread overview]
Message-ID: <3E6E131C.2040804@univ-savoie.fr> (raw)
In-Reply-To: <1047392843.16158.2192.camel@anquetil>
[-- Attachment #1: Type: text/plain, Size: 2103 bytes --]
It would be nice to be able to use recursive types without -rectypes.
Not in general (accept too much bad programs with very strange type)
but at least in one of the two case:
- the recursive types are introduced by a recursive definition
- the "loopin types" respects a positivity condition (I have no example
of bad programs accepted with strange types in the case ... but this is
probably because this is not implemented).
Here is a nice program (that needs -rectypes) and this is a pitty :-)
----------
(*
a very short representation of ordinals up to epsilon_0 as a fixpoint
of list (remark: the are more than one representation for each ordinals:
[[];[[]]] = [[[]]] != [[[]];[]] ) *)
*)
type ord = ord list
let rec compare (o1:ord) (o2:ord) = match o1, o2 with
| [], [] -> 0
| [], _ -> -1
| _, [] -> 1
| x::o1', y::o2' ->
match compare x y with
-1 -> compare o1' o2
| 1 -> compare o1 o2'
| 0 -> compare o1' o2'
let lesseq o1 o2 = compare o1 o2 <= 0
(* compute the simplest form of an ordinal*)
let rec normalize (o1:ord) =
let rec add l x =
let x = normalize x in
match l with
[] -> [x]
| y::l' -> if lesseq x y then x::l else add l' x
in
List.rev (List.fold_left add [] o1)
let zero = ([] : ord)
let un = ([[]] : ord)
let deux = ([[];[]] : ord)
let omega = ([[[]]] : ord)
let deux_omega = ([[[]];[[]]] : ord)
let omega_carré = ([[[];[]]] : ord)
let omega_to_the_omega = ([[[[]]]] : ord)
(* exercise: implements addition, multiplication and exponentiation of
ordinals, as epsilon_0 is the smallest ordinals closed for these
operation after omega *)
---------
--
Christophe Raffalli
Université de Savoie
Batiment Le Chablais, bureau 21
73376 Le Bourget-du-Lac Cedex
tél: (33) 4 79 75 81 03
fax: (33) 4 79 75 87 42
mail: Christophe.Raffalli@univ-savoie.fr
www: http://www.lama.univ-savoie.fr/~RAFFALLI
---------------------------------------------
IMPORTANT: this mail is signed using PGP/MIME
At least Enigmail/Mozilla, mutt or evolution
can check this signature
---------------------------------------------
[-- Attachment #2: Type: application/pgp-signature, Size: 252 bytes --]
next prev parent reply other threads:[~2003-03-12 16:58 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-06 23:27 [Caml-list] OCaml popularity Graham Guttocks
2003-03-10 20:43 ` Paul Steckler
2003-03-10 23:48 ` Gerd Stolpmann
2003-03-11 0:18 ` Brian Hurt
2003-03-17 23:49 ` Graham Guttocks
2003-03-11 1:43 ` Nicolas Cannasse
2003-03-11 10:23 ` Pierre Weis
2003-03-11 14:27 ` Guillaume Marceau
2003-03-11 16:16 ` David Brown
2003-03-11 16:47 ` Christophe Raffalli [this message]
2003-03-12 2:32 ` Nicolas Cannasse
2003-03-12 3:55 ` Cross-platform GUI (was Re: [Caml-list] OCaml popularity) mgushee
2003-03-12 10:51 ` [Caml-list] OCaml popularity Alex Romadinoff
2003-03-12 18:24 ` Max Kirillov
2003-03-11 19:02 ` Graham Guttocks
2003-03-12 17:12 ` Richard W.M. Jones
2003-03-12 18:08 ` Alwyn Goodloe
2003-03-12 22:34 ` Michael Schuerig
2003-03-12 23:13 ` Martin Weber
2003-03-12 23:35 ` Michael Schuerig
2003-03-13 8:02 ` Alessandro Baretta
2003-03-13 10:23 ` Michael Schuerig
2003-03-12 23:35 ` Brian Hurt
2003-03-12 23:18 ` Daniel Bünzli
2003-03-12 23:47 ` Brian Hurt
2003-03-13 2:15 ` William Lovas
2003-03-13 3:44 ` Graham Guttocks
2003-03-13 9:31 ` Richard W.M. Jones
[not found] ` <20030313095232.GC347@first.in-berlin.de>
2003-03-13 20:50 ` William Lovas
2003-03-13 21:17 ` Oliver Bandel
2003-03-13 22:01 ` Brian Hurt
2003-03-13 22:17 ` Oliver Bandel
2003-03-14 6:33 ` Michal Moskal
2003-03-14 11:50 ` Markus Mottl
2003-03-14 15:38 ` Oliver Bandel
2003-03-14 10:13 ` MikhailFedotov
2003-03-14 10:30 ` Johann Spies
2003-03-13 8:09 ` Pierre Weis
2003-03-15 1:43 ` Tushar Samant
2003-03-15 8:19 ` Andreas Eder
2003-03-11 16:26 ` Fred Yankowski
2003-03-11 19:47 ` [Caml-list] OCaml popularity (long!) mgushee
2003-03-12 11:23 ` Diego Olivier Fernandez Pons
2003-03-30 5:59 ` Belated thanks (was Re: [Caml-list] OCaml popularity) Matt Gushee
2003-03-31 15:27 ` [Caml-list] Re: Belated thanks cashin
2003-04-01 8:22 ` Belated thanks (was Re: [Caml-list] OCaml popularity) Johann Spies
2003-03-12 20:41 ` [Caml-list] OCaml popularity (long!) Max Kirillov
2003-03-13 2:36 ` Haskell-like syntax (was: [Caml-list] OCaml popularity (long!)) Oleg
2003-03-13 18:33 ` [Caml-list] Re: Haskell-like syntax Max Kirillov
2003-03-14 19:30 ` Max Kirillov
2003-03-14 19:47 ` Max Kirillov
2003-03-14 20:01 ` Seth Kurtzberg
2003-03-14 20:34 ` brogoff
2003-03-14 21:17 ` Sebastien Carlier
2003-03-14 21:51 ` brogoff
2003-03-15 2:27 ` Max Kirillov
2003-03-15 10:58 ` Markus Mottl
2003-03-15 15:52 ` [Caml-list] globally valid symbols (was: Haskell-like syntax) Max Kirillov
2003-03-15 20:16 ` [Caml-list] Re: Haskell-like syntax David Brown
2003-03-16 5:28 ` Module recursion (Was Re: [Caml-list] Re: Haskell-like syntax) brogoff
2003-03-16 11:10 ` Markus Mottl
2003-03-16 18:02 ` brogoff
2003-03-16 18:34 ` Markus Mottl
[not found] ` <Pine.LNX.4.44.0303152112560.27230-100000@grace.speakeasy.n et>
2003-03-16 5:38 ` Chris Hecker
2003-03-16 18:34 ` brogoff
2003-03-17 2:20 ` Jacques Garrigue
[not found] ` <Pine.LNX.4.44.0303161020480.11736-100000@grace.speakeasy.n et>
2003-03-17 5:08 ` Chris Hecker
2003-03-17 17:06 ` brogoff
2003-03-17 19:01 ` Ville-Pertti Keinonen
[not found] ` <Pine.LNX.4.44.0303170836240.29039-100000@grace.speakeasy.n et>
2003-03-17 19:33 ` Chris Hecker
2003-03-17 20:28 ` brogoff
[not found] ` <Pine.LNX.4.44.0303171145500.29039-100000@grace.speakeasy.n et>
2003-03-17 21:09 ` Chris Hecker
2003-03-19 2:34 ` [Caml-list] ocamlopt speed (was Re: Module recursion) Chris Hecker
2003-03-19 10:03 ` Michal Moskal
2003-03-19 10:38 ` Gerd Stolpmann
2003-03-19 20:36 ` Chris Hecker
2003-03-17 1:46 ` [Caml-list] Re: Haskell-like syntax Nicolas Cannasse
2003-03-14 22:50 ` Oleg
2003-03-20 15:01 ` Andreas Rossberg
2003-03-12 20:46 ` [Caml-list] Monads was OCaml popularity Christophe Raffalli
2003-03-13 0:03 ` [Caml-list] monads for dummies james woodyatt
2003-03-13 4:32 ` Christopher Quinn
2003-03-13 11:53 ` Christian Lindig
2003-03-12 18:59 ` [Caml-list] OCaml popularity Martin Weber
2003-03-12 20:24 ` Xavier Leroy
2003-03-13 8:57 ` [Caml-list] how to interface with integer Bigarrays using camlidl francois bereux
2003-03-13 9:36 ` Xavier Leroy
2003-03-13 0:42 ` [Caml-list] OCaml popularity Graham Guttocks
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=3E6E131C.2040804@univ-savoie.fr \
--to=christophe.raffalli@univ-savoie.fr \
--cc=caml-list@inria.fr \
--cc=gmarceau@cs.brown.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