Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type 't pred =
- | Ptrue | Pfalse
- | Pand of 't pred * 't pred
- | Por of 't pred * 't pred
- module type T = sig
- val pand : 't pred * 't pred -> 't pred
- val pands : 't pred list -> 't pred -> 't pred
- val por : 't pred * 't pred -> 't pred
- val pors : 't pred list -> 't pred -> 't pred
- end
- module M : T = struct
- let pand (p1, p2) = match p1, p2 with
- | Ptrue, p2 -> p2
- | p1, Ptrue -> p1
- | p1, p2 -> Pand (p1, p2)
- let pands l p = List.fold_right (fun p1 p2 -> pand (p1, p2)) l p
- let por = function
- | Ptrue, p2 -> p2
- | p1, Ptrue -> p1
- | p1, p2 -> Por (p1, p2)
- let pors = List.fold_right (fun p1 p2 -> por (p1, p2))
- end
- (* R�sultat de la compilation :
- $ ocamlc bug_caml.ml
- File "bug_caml.ml", line 13, characters 15-361:
- Signature mismatch:
- Modules do not match:
- sig
- val pand : 'a pred * 'a pred -> 'a pred
- val pands : 'a pred list -> 'a pred -> 'a pred
- val por : 'a pred * 'a pred -> 'a pred
- val pors : '_a pred list -> '_a pred -> '_a pred
- end
- is not included in
- T
- Values do not match:
- val pors : '_a pred list -> '_a pred -> '_a pred
- is not included in
- val pors : 'a pred list -> 'a pred -> 'a pred
- *)
Add Comment
Please, Sign In to add comment