Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. module HM
  2.  
  3. let rec loop x = loop x
  4. let mk_dno x = loop loop
  5.  
  6. let assert_same_type a b =
  7. (fun f -> // manually desuget let to avoid let-polymorphism
  8. let _ = f a in
  9. let _ = f b in
  10. mk_dno loop
  11. ) (fun x -> mk_dno loop)
  12.  
  13. let assert_different_types a b =
  14. assert_same_type a (b a)
  15.  
  16. let test_unification t1 t2 =
  17. let _ = assert_different_types t1 t2 in
  18. let force_t1 p = p (fun f s -> assert_same_type f t1) in
  19. let force_t2 p = p (fun f s -> assert_same_type s t2) in
  20. (fun p ->
  21. let _ = force_t1 p in
  22. let _ = force_t2 p in
  23. p
  24. ) (mk_dno loop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement