Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* Exercice 2 *)
- type 'a mapile = { mutable contenu: 'a list };;
- exception Empty;;
- (* Question 1 *)
- let creer_pile () = { contenu = [] };;
- (* Question 2 *)
- let est_vide = function
- | { contenu = [] } -> true
- | _ -> false;;
- if not (est_vide (creer_pile ())) then failwith "Pile créée non vide";;
- (* Question 3 *)
- let taille { contenu } = List.length contenu;;
- if (taille (creer_pile ()) <> 0) then failwith "Taille de la pile créée non nulle";;
- (* Question 4 *)
- let empiler element pile =
- let { contenu } = pile in
- pile.contenu <- element :: contenu;;
- let pile_test = creer_pile ();;
- empiler 21 pile_test;;
- if (taille pile_test <> 1) then failwith "empiler n'ajoute pas d'éléments a la pile";;
- (* Question 5 *)
- let depiler pile =
- let { contenu } = pile in match contenu with
- | [] -> raise Empty
- | t :: q -> pile.contenu <- q;;
- depiler pile_test;;
- if not (est_vide pile_test) then failwith "depiler ne supprime pas d'éléments a la pile";;
- try depiler pile_test; failwith "depiler sur une pile vide de lève pas l'exception Empty" with Empty -> ();;
- (* Question 6 *)
- let tete { contenu } = match contenu with
- | [] -> raise Empty
- | t :: q -> t;;
- try ignore (tete pile_test); failwith "tete sur une pile vide de lève pas l'exception Empty" with Empty -> ();;
- empiler 22 pile_test;;
- empiler 23 pile_test;;
- if tete pile_test <> 23 then failwith "tete ou empiler ne fonctionne pas correctement";;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement