Guest User

Untitled

a guest
Feb 16th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. type 't pred =
  2. | Ptrue | Pfalse
  3. | Pand of 't pred * 't pred
  4. | Por of 't pred * 't pred
  5.  
  6. module type T = sig
  7. val pand : 't pred * 't pred -> 't pred
  8. val pands : 't pred list -> 't pred -> 't pred
  9. val por : 't pred * 't pred -> 't pred
  10. val pors : 't pred list -> 't pred -> 't pred
  11. end
  12.  
  13. module M : T = struct
  14. let pand (p1, p2) = match p1, p2 with
  15. | Ptrue, p2 -> p2
  16. | p1, Ptrue -> p1
  17. | p1, p2 -> Pand (p1, p2)
  18.  
  19. let pands l p = List.fold_right (fun p1 p2 -> pand (p1, p2)) l p
  20.  
  21. let por = function
  22. | Ptrue, p2 -> p2
  23. | p1, Ptrue -> p1
  24. | p1, p2 -> Por (p1, p2)
  25.  
  26. let pors = List.fold_right (fun p1 p2 -> por (p1, p2))
  27. end
  28.  
  29. (* R�sultat de la compilation :
  30.  
  31. $ ocamlc bug_caml.ml
  32.  
  33. File "bug_caml.ml", line 13, characters 15-361:
  34. Signature mismatch:
  35. Modules do not match:
  36. sig
  37. val pand : 'a pred * 'a pred -> 'a pred
  38. val pands : 'a pred list -> 'a pred -> 'a pred
  39. val por : 'a pred * 'a pred -> 'a pred
  40. val pors : '_a pred list -> '_a pred -> '_a pred
  41. end
  42. is not included in
  43. T
  44. Values do not match:
  45. val pors : '_a pred list -> '_a pred -> '_a pred
  46. is not included in
  47. val pors : 'a pred list -> 'a pred -> 'a pred
  48.  
  49. *)
Add Comment
Please, Sign In to add comment