functor (F : Fun->
  sig
    type dom = F.dom
    type cod = F.cod
    val update : dom -> cod -> unit
    val call : dom -> (cod -> unit) -> unit
    val call_direct : dom -> cod
  end