Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let list_remove x l = List.filter (fun x' -> x' != x) l
- class observer =
- object
- method value_changed = print_string "value_changed"
- end;;
- class ['a] observable =
- object
- constraint 'a = #observer
- val mutable observers : 'a list = []
- method add_observer o = observers <- o :: observers
- method remove_observer o = observers <- list_remove o observers
- method notify = List.map (fun o -> o#value_changed) observers
- end;;
- let a : 'a observable = new observable;;
- let b : observer = new observer;;
- a#add_observer b;;
- a#notify;;
Add Comment
Please, Sign In to add comment