Date: Sun, 12 Jan 1997 20:19:43 +0100 (MET)
From: David Monniaux <David.Monniaux@ens-lyon.fr>
To: Caml-list <caml-list@inria.fr>
Subject: bizarrerie du typage
J'ai un exemple assez amusant de bizarreries du typage:
Objective Caml version 1.01
#let zero = fun x y -> y;;
val zero : 'a -> 'b -> 'b = <fun>
#let succ = fun n f x -> n f (f x);;
val succ : (('a -> 'b) -> 'b -> 'c) -> ('a -> 'b) -> 'a -> 'c = <fun>
#let un = succ zero;;
val un : ('_a -> '_b) -> '_a -> '_b = <fun>
#let deux = succ un;;
val deux : ('_a -> '_a) -> '_a -> '_a = <fun>
#deux (fun x -> x) 0;;
- : int = 0
#deux;;
- : (int -> int) -> int -> int = <fun>
Pourquoi le type de "deux" a-t-il changé?
(cela fait aussi avec la version 1.03)
N'aurais-je rien compris au système de typage du CAML?
Il me semblait pourtant que quand un identificateur était lié à un terme
déjà typé, son type était bien établi (égal à celui de ce terme), et ne
changeait pas...
"Si l'informatique marchait, cela se saurait."
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:09 MET