functor (Elt : Elt->
  functor
    (Src : sig
             type t
             val create : len:int -> t
             val length : t -> int
             val get : t -> int -> Elt.t
             val set : t -> int -> Elt.t -> unit
             val sexp_of_t : t -> Sexplib.Sexp.t
           end->
    functor
      (Dst : sig
               type t
               val create : len:int -> t
               val length : t -> int
               val get : t -> int -> Elt.t
               val set : t -> int -> Elt.t -> unit
               val sexp_of_t : t -> Sexplib.Sexp.t
               val unsafe_blit : (Src.t, t) Blit_intf.blit
             end->
      sig
        val blit : (Src.t, Dst.t) blit
        val blito : (Src.t, Dst.t) blito
        val unsafe_blit : (Src.t, Dst.t) blit
        val sub : (Src.t, Dst.t) sub
        val subo : (Src.t, Dst.t) subo
      end