functor
  (Basic : sig
             type 'a t
             type key = int
             type dimension = int
             val create : (dimension, 'a t) unary
             val create_biggest_key : (key, 'a t) unary
             val expand_and_copy : ('a t, dimension, 'a t) binary
             val init : (dimension, (key, 'a) unary, 'a t) binary
             val set : (key, 'a, 'a t, 'a t) ternary
             val free : (key, 'a t, 'a t) binary
             val get : (key, 'a t, 'a option) binary
             val unsafe_get : (key, 'a t, 'a option) binary
             val dimension : ('a t, dimension) unary
             val print : ('a unary_no_output, 'a t) binary_no_output
             val key_list : ('a t, key list) unary
             val iter : ((key, 'a) binary_no_output, 'a t) binary_no_output
             val fold_with_interruption :
               ((key, 'a, 'b, 'b) ternary, 'a t, 'b, 'b) ternary
             val fold : ((key, 'a, 'b, 'b) ternary, 'a t, 'b, 'b) ternary
             val fold2_common :
               ((key, 'a, 'b, 'c, 'c) quaternary, 'a t, 'b t, 'c, 'c)
               quaternary
             val free_all : ('a t, 'a t) unary
           end->
  sig
    type 'a t
    type key = int
    type dimension = int
    val create : (dimension, 'a t) unary
    val create_biggest_key : (key, 'a t) unary
    val expand_and_copy : ('a t, dimension, 'a t) binary
    val init : (dimension, (key, 'a) unary, 'a t) binary
    val set : (key, 'a, 'a t, 'a t) ternary
    val free : (key, 'a t, 'a t) binary
    val get : (key, 'a t, 'a option) binary
    val unsafe_get : (key, 'a t, 'a option) binary
    val dimension : ('a t, dimension) unary
    val print : ('a unary_no_output, 'a t) binary_no_output
    val key_list : ('a t, key list) unary
    val iter : ((key, 'a) binary_no_output, 'a t) binary_no_output
    val fold_with_interruption :
      ((key, 'a, 'b, 'b) ternary, 'a t, 'b, 'b) ternary
    val fold : ((key, 'a, 'b, 'b) ternary, 'a t, 'b, 'b) ternary
    val fold2_common :
      ((key, 'a, 'b, 'c, 'c) quaternary, 'a t, 'b t, 'c, 'c) quaternary
    val free_all : ('a t, 'a t) unary
  end