Module Ppx_functor_application

module Format = Stdlib.Format
val name : string
type longident = Ppxlib.Longident.t
val show_longident : Ppxlib.Longident.t -> string
val pp_longident : Format.formatter -> longident -> Base.unit
val string_of_pattern : Astlib__.Ast_414.Parsetree.pattern -> string
val string_of_module_expr : Astlib__.Ast_414.Parsetree.module_expr -> string
val show_module_expr : Astlib__.Ast_414.Parsetree.module_expr -> string
val pp_module_expr : Format.formatter -> Ppxlib.module_expr -> Base.unit
type module_dsl =
  1. | Var of longident
  2. | App of module_dsl * module_dsl
  3. | ModExpr of Ppxlib.module_expr
  4. | Abs of Base.string * module_dsl
  5. | Pipe of module_dsl Base.list
  6. | Meta of module_dsl * Ppxlib.location

Defines a DSL for functor application.

val pp_module_dsl : Ppx_deriving_runtime.Format.formatter -> module_dsl -> Ppx_deriving_runtime.unit
val show_module_dsl : module_dsl -> Ppx_deriving_runtime.string
val var_of_string : string -> module_dsl
val elab : loc:Ppxlib__.Location.t -> module_dsl -> Ppxlib.module_expr

Elaborate a OCaml module expression from a `module_dsl`

val collect_pipes : module_dsl -> module_dsl Base.List.t
val normalize : module_dsl -> module_dsl

Get rid of extra `Pipe` nodes

val parse : Ppxlib.expression -> module_dsl

Recognize a small language embedded in OCaml syntax for applying functors in chain.

val expand : ctxt:Ppxlib.Expansion_context.Extension.t -> Ppxlib.expression -> Ppxlib.module_expr
val ext : Ppxlib.Extension.V3.t
val rule : Ppxlib.Context_free.Rule.t