Je ne connais pas caml light mais j'image que la syntaxe ressemble à OCaml.
let f(borne_inf)=f(borne_inf) && f(borne_sup)=f(borne_sup)
Ceci j'a aucun sens, c'est comme si tu écraivais 1=1 ... Il faut stocker dans deux variables tes résultats :
let f_inf=f(borne_inf) && f_sup=f(borne_sup)
Ensuite, tu peux travailler sur les valeurs f_inf et f_sup.
1 2 3
| if f(borne_inf)*f(borne_sup)>0
then "impossible"
else borne_inf=mini && borne_sup=maxi |
Ici tu as un problème de type, dans un cas, tu as un type vide (moi j'appèle ça unit dans un cas et de l'autre tu as une chaîne de caractère. Le mieux ici pour éviter ça, c'est de lancer une exception. (en OCaml c'est failwith, tu saura l'adapter je pense)
1 2 3 4
| if f_min*f_max>0
failwith("impossible")
else
... |
Après ton else, tu effectues ton let milieu=...
Partager