Version française
Home     About     Download     Resources     Contact us    
Browse thread
stderr
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Dave Mason <dmason@p...>
Subject: Re: stderr
Sorry, English only (I *really* have to spend a summer in Quebec or
France soon to get my French to the not-totally-embarassing stage):

The problem with Cristian's solution is that you don't automatically
get told what positions in what file had the mismatch, like you do if
you simply leave out the wildcard match.  If there were a convenient
way to get that automatic error tracking, I'd rather do as Cristian
suggests because it makes it more explicit

../Dave

Christian Boos writes:
> 
> Bonjour,
> 
> David Monniaux writes:
>  > Bonjour,
>  > 
>  > deux petites remarques en passant:
> 
> toujours en passant ...
> 
>  > 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. ocamlc produit une warning dans ce cas, ce
>  > qui d'ailleurs aide largement a eviter des erreurs de programmation.
>  > Le probleme est que lorsque l'on utilise cette facilite de "warnings" pour
>  > detecter des cas "oublies", on est "parasite" par les pattern-matching
>  > incomplets tout a fait normaux que l'on a laisses. De meme que certains
> 
> dans de telles circonstances, j'utilise :
> 
> 	let matche_A_et_B_seulement_alors_qu'il_y'en_a_plein_d'autres =
> 	  function
> 	  A -> ...
> 	| B -> ...
> 	| _ -> failwith "pas possible d'avoir autre chose qu'A ou B ici"
> 
> parce que :
> 	1) on ne sait jamais (mais c'est vrai qu'il y aurait de toute facon
> 	   une exception Match_failure).
> 	2) c'est plus lisible : on peut ecrire explicitement dans le message
> 	   que l'on sait qu'ici on obtiendra jamais les autres cas, voire 
> 	   expliquer pourquoi dans un commentaire.
> 
> Mais par ailleurs, c'est vrai qu'un certain support du compilateur pour 
> produire des messages d'erreur plus informatifs serait le bienvenu, je pense
> par exemple a une nouvelle primitive [assert] qui eviterait d'ecrire des 
> "assert" verbeux a la main (du type [assert (a < 100) "a < 100"]), et qui
> renvoierait la position de l'erreur dans le source.
> 
> 
> [English: David suggested that the warning about missing cases in pattern-
> matching should be disabled using some sort of #pragma. I argue that it is
> better to use the anonymous binding _ as the last case, with an
> appropriate error message or comment.]
> 
> 
> -- Christian
>