1    object Obs =
2        def map<T, U> (list : List<T>) (f : T -> U) =
3            let to = List<U>.new
4    
5            list.bind { i x -> to.add i (f x) @[weak to] }
6                      { i x -> to.remove_at i @[weak to] }
7            |> to.push_token
8    
9            to.as_readonly
10   
11       def subscribe<T> (list : List<T>) (f : u32 * T -> Unit) =
12           list.subscribe f f
13