From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id JAA15967 for caml-redistribution; Mon, 13 Jan 1997 09:26:02 +0100 (MET) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id UAA05693 for ; Sun, 12 Jan 1997 20:20:38 +0100 (MET) Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by nez-perce.inria.fr (8.7.6/8.7.3) with ESMTP id UAA05358 for ; Sun, 12 Jan 1997 20:20:36 +0100 (MET) Received: from brotteaux (brotteaux [140.77.191.102]) by cri.ens-lyon.fr (8.8.4/8.8.1) with ESMTP id UAA16247 for ; Sun, 12 Jan 1997 20:20:36 +0100 (MET) Date: Sun, 12 Jan 1997 20:19:43 +0100 (MET) From: David Monniaux X-Sender: dmonniau@brotteaux To: Caml-list Subject: bizarrerie du typage Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: weis 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 = #let succ = fun n f x -> n f (f x);; val succ : (('a -> 'b) -> 'b -> 'c) -> ('a -> 'b) -> 'a -> 'c = #let un = succ zero;; val un : ('_a -> '_b) -> '_a -> '_b = #let deux = succ un;; val deux : ('_a -> '_a) -> '_a -> '_a = #deux (fun x -> x) 0;; - : int = 0 #deux;; - : (int -> int) -> int -> int = 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."