sig
  type state
  val int : int -> state -> state
  val bool : bool -> state -> state
  val char : char -> state -> state
  val int32 : int32 -> state -> state
  val int64 : int64 -> state -> state
  val nativeint : nativeint -> state -> state
  val slice : string -> int -> int -> state -> state
  type 'a hash_fun = '-> CCHash.state -> CCHash.state
  val string : string CCHash.S.hash_fun
  val list : 'CCHash.S.hash_fun -> 'a list CCHash.S.hash_fun
  val array : 'CCHash.S.hash_fun -> 'a array CCHash.S.hash_fun
  val opt : 'CCHash.S.hash_fun -> 'a option CCHash.S.hash_fun
  val pair :
    'CCHash.S.hash_fun ->
    'CCHash.S.hash_fun -> ('a * 'b) CCHash.S.hash_fun
  val triple :
    'CCHash.S.hash_fun ->
    'CCHash.S.hash_fun ->
    'CCHash.S.hash_fun -> ('a * 'b * 'c) CCHash.S.hash_fun
  val if_ :
    bool ->
    'CCHash.S.hash_fun -> 'CCHash.S.hash_fun -> 'CCHash.S.hash_fun
  val seq : 'CCHash.S.hash_fun -> 'CCHash.sequence CCHash.S.hash_fun
  val gen : 'CCHash.S.hash_fun -> 'CCHash.gen CCHash.S.hash_fun
  val klist : 'CCHash.S.hash_fun -> 'CCHash.klist CCHash.S.hash_fun
end