let once key cc =
    try Hashtbl.find compiled key
    with Not_found ->
      let t = cc () in
      Hashtbl.add compiled key t ; t