functor (T : Typeable.Typeable->
  sig
    val sum : (int * Pickle.id list -> T.a m) -> Pickle.id -> T.a m
    val tuple : (Pickle.id list -> T.a m) -> Pickle.id -> T.a m
    val record :
      (T.a -> Pickle.id list -> T.a m) -> int -> Pickle.id -> T.a m
  end