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