# Module type Applicative_intf.Args2

    module type Args2 = sig .. end

    type ('a, 'e) arg

    type ('f, 'r, 'e) t

    val nil : ('r, 'r, 'a) t

    val cons : ('a, 'e) arg ->
           ('f, 'r, 'e) t ->
           ('a -> 'f, 'r, 'e) t

    val (@>) : ('a, 'e) arg ->
           ('f, 'r, 'e) t ->
           ('a -> 'f, 'r, 'e) t

    val step : ('f1, 'r, 'e) t ->
           f:('f2 -> 'f1) -> ('f2, 'r, 'e) t

    val mapN : f:'f ->
           ('f, 'r, 'e) t -> ('r, 'e) arg

    val applyN : ('f, 'e) arg ->
           ('f, 'r, 'e) t -> ('r, 'e) arg