sig
  val fst : 'a * 'b * '-> 'a
  val snd : 'a * 'b * '-> 'b
  val thd : 'a * 'b * '-> 'c
end