Guest User

Untitled

a guest
Jan 14th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.57 KB | None | 0 0
  1.  
  2. let list_remove x l = List.filter (fun x' -> x' != x) l
  3.  
  4. class observer =
  5.   object
  6.     method value_changed = print_string "value_changed"
  7.   end;;
  8.  
  9. class ['a] observable =
  10.   object
  11.     constraint 'a = #observer
  12.     val mutable observers : 'a list = []
  13.     method add_observer o = observers <- o :: observers
  14.     method remove_observer o = observers <- list_remove o observers
  15.     method notify = List.map (fun o -> o#value_changed) observers
  16.   end;;
  17.  
  18.  
  19. let a : 'a observable = new observable;;
  20.  
  21. let b : observer = new observer;;
  22.  
  23. a#add_observer b;;
  24.  
  25. a#notify;;
Add Comment
Please, Sign In to add comment