functor (A : Basic2->
  sig
    val align_with :
      (('a, 'b) These.t -> 'c) ->
      ('p, 'a) A.t -> ('p, 'b) A.t -> ('p, 'c) A.t
    val align : ('p, 'a) A.t -> ('p, 'b) A.t -> ('p, ('a, 'b) These.t) A.t
    val falign :
      ('-> '-> 'a) -> ('p, 'a) A.t -> ('p, 'a) A.t -> ('p, 'a) A.t
    val pad_zip_with :
      ('a option -> 'b option -> 'c) ->
      ('p, 'a) A.t -> ('p, 'b) A.t -> ('p, 'c) A.t
    val pad_zip :
      ('p, 'a) A.t -> ('p, 'b) A.t -> ('p, 'a option * 'b option) A.t
  end