je veux ecrire la soustraction de deux nombres représentés en base 10000 sous forme de listes, j'ai écrit:
l'algorithme a l'air correct puisque "a la main" cela me donne bien ce que je veux seulement j'ai une erreur de typage que je ne vois pas ( elle doit surement etre toute bete comme a mon habitude)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let soustraction l1 l2 = let rec aux l1 l2 r list = match l1 l2 r with |[],[],r -> if r=0 then list else list@[r] |t1::q1,[],r -> if r=0 then aux q1 [] 0 (list@[t1]) else if t1-r=0 then aux q1 [] 0 (list@[0]) else aux q1 [] 0 (list@[t1-1]) |[],_,_ -> failwith "pas possible que ça arrive" |t1::q1,t2::q2,r -> if t1-(t2+r)>0 then aux q1 q2 0 (list@[t1-(t2+r)]) else aux q1 q2 1 (list@[10000+t1-(t2+r)]) in aux l1 l2 0 [];;
caml me rend:
pourriez vous me montrer l'erreur svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Cette expression est de type ('a -> 'b -> int list * int list * int) -> 'a -> 'b -> int list -> int list, mais est utilisée avec le type int list -> int list -> int -> int list -> int list.
Partager