Erreur en caml ou quoi
Fermé
h-ghanmi
-
17 juin 2009 à 15:47
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 20 juin 2009 à 13:14
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 20 juin 2009 à 13:14
A voir également:
- Erreur en caml ou quoi
- Erreur 0x80070643 - Guide
- Erreur 10016 epson - Forum Imprimante
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
- Erreur g030 - Forum Bbox Bouygues
- Erreur 5000 france tv - Forum Lecteurs et supports vidéo
1 réponse
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
20 juin 2009 à 13:14
20 juin 2009 à 13:14
Ton code serait correct, cependant il y a quelques contraintes...
Dans tes instructions if () à l'intérieur des parenthèses ça doit être une valeur booléenne
Remarque, les parenthèses sont facultatives.
Le gros piège c'est que le if renvoie toujours un résultat qui doit donc avoir un type.
On devra donc avoir le même type à la fin du then et à la fin du else (le type unit, si il n'y a pas de else)
Ce type commun sera le type du if
Je simplifie ton code :
instuction4 et instruction5 doivent être de même type
Or comme le if condition1 n'a pas de else, il est de type unit, donc le then doit aussi être unit
Or la dernière instruction du then c'est le if condition3, donc instruction4 et instruction5 devront être unit
Voici un exemple correct :
C'est pour ça que absX renvoie un réél, en l'occurrence la valeur absolue du réél x
Dans tes instructions if () à l'intérieur des parenthèses ça doit être une valeur booléenne
Remarque, les parenthèses sont facultatives.
Le gros piège c'est que le if renvoie toujours un résultat qui doit donc avoir un type.
On devra donc avoir le même type à la fin du then et à la fin du else (le type unit, si il n'y a pas de else)
Ce type commun sera le type du if
Je simplifie ton code :
if condition1 then begin instruction2; if condition3 then instruction4 else instruction5; end;;Ici condition1 et condition3 sont des booléens (ils valent true ou false)
instuction4 et instruction5 doivent être de même type
Or comme le if condition1 n'a pas de else, il est de type unit, donc le then doit aussi être unit
Or la dernière instruction du then c'est le if condition3, donc instruction4 et instruction5 devront être unit
Voici un exemple correct :
let abs x = if x<0. then -.x else x;;x est un réél, le then et le else renvoie des rééls, donc le résultat du if sera réél
C'est pour ça que absX renvoie un réél, en l'occurrence la valeur absolue du réél x