package mirage

  1. Overview
  2. Docs

Module Functoria.ImplSource

Sourcetype 'a t

The type for values representing module implementations of type 'a.

Sourcetype abstract

The type for untyped t.

Sourcetype 'a device = ('a, abstract) Device.t

The type for device whose dependencies have type abstract.

Sourceval abstract : 'a t -> abstract

abstract i is i with its type erased.

Sourceval app_has_no_arguments : 'a t -> bool

app_has_no_arguments i is true if the argument list is empty and it is an application, false otherwise.

Sourceval pp : 'a t Fmt.t

pp is the pretty-printer for module implementations.

Sourceval pp_abstract : abstract Fmt.t

pp_abstract is the pretty-printer for abstract module implementations.

Sourceval pp_dot : abstract Fmt.t

pp_dot outputs the dot representation of module implementations.

Sourceval ($) : ('a -> 'b) t -> 'a t -> 'b t

m $ a applies the functor m to the module a.

Sourceval if_ : bool Key.value -> 'a t -> 'a t -> 'a t

if_t v t1 t2 is t1 if v is resolved to true and t2 otherwise.

Sourceval match_ : 'b Key.value -> default:'a t -> ('b * 'a t) list -> 'a t

match_t v cases ~default chooses the tementation amongst cases by matching the v's value. default is chosen if no value matches.

Sourceval of_device : 'a device -> 'a t

of_device t is the tementation device t.

Sourceval v : ?packages:Package.t list -> ?packages_v:Package.t list Key.value -> ?runtime_args:Runtime_arg.t list -> ?keys:Key.t list -> ?extra_deps:abstract list -> ?connect:(Info.t -> string -> string list -> 'a Device.code) -> ?dune:(Info.t -> Dune.stanza list) -> ?configure:(Info.t -> unit Action.t) -> ?files:(Info.t -> Fpath.t list) -> string -> 'a Type.t -> 'a t

v ... is of_device @@ Device.v ...

Sourceval main : ?pos:(string * int * int * int) -> ?packages:Package.t list -> ?packages_v:Package.t list Key.value -> ?runtime_args:Runtime_arg.t list -> ?keys:Key.t list -> ?extra_deps:abstract list -> string -> 'a Type.t -> 'a t

main ... name ty is v ... ~connect name ty where connect is <name>.start <args>

Sourcemodule Tbl : Hashtbl.S with type key = abstract

Hashtbl of implementations.

Applications

Sourcetype 'b f_dev = {
  1. f : 'a. 'a device -> 'b;
}

The type for iterators on devices.

Sourceval with_left_most_device : Context.t -> _ t -> 'a f_dev -> 'a

with_left_most_device ctx t f applies f on the left-most device in f. If node are resolved using ctx.

Sourceval simplify : full:bool -> context:Context.t -> abstract -> abstract

simplify ~full ~context impl simplifies the implementation impl according to keys present in the context.

If full is true, then the default values of keys are used in their absence. Otherwise, absent keys are left un-simplified.

Sourceval eval : context:Context.t -> abstract -> Device.Graph.t

eval ~context impl fully evaluates the implementation impl according to keys present in the context. It returns a graph composed only of devices.

Collections

Sourcetype label =
  1. | If : _ Key.value -> label
  2. | Dev : (_, _) Device.t -> label
  3. | App

The description of a vertex

Sourceval collect : (module Functoria__.Misc.Monoid with type t = 'ty) -> (label -> 'ty) -> abstract -> 'ty

collect (module M) f g collects the content of f v for each vertex v in g.

OCaml

Innovation. Community. Security.