Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000023OCamlOCaml generalpublic2000-01-13 19:172001-03-15 12:27
Reporteradministrator 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionno change required 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000023: PRIVATE: exceptions
DescriptionFull_Name: Bruno MORVAN
Version: Caml light 0.74
OS: W 95
Submission from: proxy.nordnet.fr (194.206.126.190)


Une sesssion entiere.


> Caml Light version 0.74

#try 1/0 with foo->1 | bar -> 0;;
Entrée interactive:
>try 1/0 with foo->1 | bar -> 0;;
> ^^^
Attention: ce cas de filtrage est inutile.
- : int = 1
#


me laisse perplexe.

les exceptions ne semble même pas testées.

TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0002062)
administrator (administrator)
2000-01-23 15:09

> #try 1/0 with foo->1 | bar -> 0;;
> Entrée interactive:
>>try 1/0 with foo->1 | bar -> 0;;
>> ^^^
> Attention: ce cas de filtrage est inutile.
> - : int = 1
> #

Dans votre code, les identificateurs "foo" et "bar" sont des variables qui
sont liees dans les patterns ou elles apparaissent. Vous auriez aussi bien
pu ecrire: try 1/0 with x -> 1 | y -> 0;;
ou meme: try 1/0 with _ -> 1 | y -> 0;;

D'ailleurs le compilateur vous signale que le deuxieme cas n'est jamais
utilise puisque toutes les exceptions sont rattrappees par le premier.

Vous vouliez sans doute ecrire try 1/0 with Foo -> 1 | Bar -> 0;;
et dans ce cas le compilateur proteste que Foo et Bar ne sont pas des
exceptions connues.

-- Damien
(0002063)
administrator (administrator)
2000-01-23 21:11



Damien Doligez a écrit :

> > #try 1/0 with foo->1 | bar -> 0;;
> > Entrée interactive:
> >>try 1/0 with foo->1 | bar -> 0;;
> >> ^^^
> > Attention: ce cas de filtrage est inutile.
> > - : int = 1
> > #
>
> Dans votre code, les identificateurs "foo" et "bar" sont des variables qui
> sont liees dans les patterns ou elles apparaissent. Vous auriez aussi bien
> pu ecrire: try 1/0 with x -> 1 | y -> 0;;
> ou meme: try 1/0 with _ -> 1 | y -> 0;;
>
> D'ailleurs le compilateur vous signale que le deuxieme cas n'est jamais
> utilise puisque toutes les exceptions sont rattrappees par le premier.
>
> Vous vouliez sans doute ecrire try 1/0 with Foo -> 1 | Bar -> 0;;
> et dans ce cas le compilateur proteste que Foo et Bar ne sont pas des
> exceptions connues.
>
> -- Damien

Merci beaucoup.

En fait j'ai envoyé ce bug trop vite, en réflechissant un peu j'ai vu mon
erreur. Pierre Weiss m'a répondu en parallèle.

En conclusion :

Cette erreur m'a permis de comprendre quelque chose sur lequel la documentation
Caml est trop muette:
le rôle des Majuscules.
Puisque Caml autorise la déclaration d' exceptions en minuscule, j'ai pris
cette (surement mauvaise) habitude,
qui a conduit à cette bourde.

Bruno MORVAN
Lycee H Wallon
VALENCIENNES.




- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker