package core_kernel

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

The difference between Hashable and Hashable_t functors is that the former's result type doesn't contain type t and the latter does. Therefore, Hashable can't be used to combine two pairs into 4-tuple. but Hashable_t can. On the other hand result of Hashable_t cannot be combined with Comparable.

example: module Four_ints = Tuple.Hashable_t (Tuple.Hashable_t (Int)(Int)) (Tuple.Hashable_t (Int)(Int))

If instead we used Hashable compiler would complain that the input to outer functor doesn't have type t.

On the other hand: module Foo = struct type t = String.t * Int.t include Tuple.Comparable (String) (Int) include Tuple.Hashable (String) (Int) end

If we used Hashable_t above, the compiler would complain that we have two types t defined.

Unfortunately, it is not possible to define just one functor that could be used in both cases.

Parameters

Signature

include Ppx_sexp_conv_lib.Sexpable.S with type t := Tuple.Make(S1)(S2).t
val t_of_sexp : Sexplib0.Sexp.t -> Tuple.Make(S1)(S2).t
val sexp_of_t : Tuple.Make(S1)(S2).t -> Sexplib0.Sexp.t
include Hashable.S with type t := Tuple.Make(S1)(S2).t
include Hashable.Common with type t := Tuple.Make(S1)(S2).t
val compare : Tuple.Make(S1)(S2).t -> Tuple.Make(S1)(S2).t -> Base.Int.t
val hash_fold_t : Ppx_hash_lib.Std.Hash.state -> Tuple.Make(S1)(S2).t -> Ppx_hash_lib.Std.Hash.state
val hash : Tuple.Make(S1)(S2).t -> Ppx_hash_lib.Std.Hash.hash_value
val hashable : Tuple.Make(S1)(S2).t Core_kernel__.Hashtbl.Hashable.t
module Hash_queue : Hash_queue.S with type Key.t = Tuple.Make(S1)(S2).t
OCaml

Innovation. Community. Security.