Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PRIVATE: exceptions #2356

Closed
vicuna opened this issue Jan 13, 2000 · 2 comments
Closed

PRIVATE: exceptions #2356

vicuna opened this issue Jan 13, 2000 · 2 comments
Labels

Comments

@vicuna
Copy link

vicuna commented Jan 13, 2000

Original bug ID: 23
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)

Bug description

Full_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.

@vicuna
Copy link
Author

vicuna commented Jan 23, 2000

Comment author: administrator

#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

@vicuna
Copy link
Author

vicuna commented Jan 23, 2000

Comment author: administrator

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.

@vicuna vicuna closed this as completed Mar 15, 2001
@vicuna vicuna added the bug label Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant