functor
  (MkMatrix : sig
                type t
                val make_matrix :
                  Matrix.T.Style.t list ->
                  (Diagrams.Node.Transfo.Style.t list *
                   Diagrams.MakeDiagram.Arr.t list)
                  list list ->
                  Diagrams.Node.info *
                  Diagrams.Node.info Diagrams.Matrix.matrix
              end->
  sig
    val array :
      Diagrams.anchor list ->
      ?vertical_padding:(int -> float) ->
      ?horizontal_padding:(int -> float) ->
      ?all_node_styles:Matrix.T.Style.t list ->
      ?matrix_anchor:(Diagrams.Matrix.info -> Diagrams.Point.t) ->
      ?main_node_style:Diagrams.Node.Transfo.Style.t list ->
      MkMatrix.t list list list ->
      Diagrams.Node.info * Diagrams.Node.info Diagrams.Matrix.matrix
  end