let observe : (unit -> 'a repr) -> 'a observation = fun f -> f ()