From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id LAA28707 for caml-redistribution; Wed, 7 May 1997 11:23:15 +0200 (MET DST) 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 VAA17663 for ; Tue, 6 May 1997 21:59:41 +0200 (MET DST) Received: from tequila.systemsz.cs.yale.edu (TEQUILA.SYSTEMSZ.CS.YALE.EDU [128.36.11.106]) by nez-perce.inria.fr (8.8.5/8.7.3) with ESMTP id VAA17472 for ; Tue, 6 May 1997 21:59:39 +0200 (MET DST) Received: (from news@localhost) by tequila.systemsz.cs.yale.edu (8.8.5/8.8.5) id PAA24532 for caml-list@inria.fr; Tue, 6 May 1997 15:59:37 -0400 To: caml-list@inria.fr From: Stefan Monnier Newsgroups: lists.caml Subject: Re: pattern matching References: <336F3968.B7CF7F8@lannion.cnet.fr> Date: 06 May 1997 15:59:37 -0400 Message-ID: <5lpvv45q3a.fsf@tequila.systemsz.cs.yale.edu> X-Newsreader: Gnus v5.3/Emacs 19.34 Path: tequila.systemsz.cs.yale.edu NNTP-Posting-Host: tequila.systemsz.cs.yale.edu Sender: weis Olivier Montanuy writes: > > Par ailleurs, il arrive quelquefois que l'on fasse volontairement des > > pattern-matching incomplets, parce que le programme est tel que les > > cas non fournis ne peuvent arriver. > Un programme, ca evolue, et ce qui est vrai aujourd'hui risque de > ne plus l'etre si une autre personne doit retoucher le code. Pour ces cas là, il serait bien d'avoir une analyse suffisante qui détermine "oh, ben, dit donc, il manque un cas dans le pattern-matching, mais c'est un cas impossible alors j'vais rien dire". Comme ça, on évite les warnings (pour autant que l'analyse est suffisamment maline) mon on a quand même l'avertissement si qqun change le code. Un tel système avait plus ou moins été développé pour SML/NJ sous le nom de refinement-types (quoi que c'était pas tout à fait automatique). Le compilateur Scheme "Stalin" utilise aussi un système similaire pour déterminer quelle représentation choisir (éviter les tags quand ils ne sont pas nécessaires). Stefan ------------------- Version anglophone: Freeman's refinement-types and other less-sophisticated analysis can get you the best of both worlds by figuring out that a warning is not necessary (because the case cannot happen) so that if you change the code, the warning will reappear if the case becomes possible. Stefan