jon.recoil.org

Module Flambda2_parser.Fexpr_prim_descr

type param = Fexpr.prim_param
type t = Fexpr.prim_op
type ('p, 't, 'r) lens = {
  1. encode : encode_env -> 'p -> 't;
  2. decode : decode_env -> 't -> 'r;
}

general 2-way translation between fexpr-related and flambda-related types

type ('a, 'b) map_lens = ('a, 'b, 'a) lens

reversible lens

type 'p value_lens = ('p, string Fexpr.located) map_lens

fexpr primitive parameter payload conversion

type 'p params_lens = ('p, param list) map_lens

parameters conversion

Full primitive translation assuming prior pattern-matching

type 'p conv = encode_env -> 'p -> t

reconversion to fexpr

type 'p param_cons

composable lens constructor

type 'p case_cons

pattern recognition constructor

Final boxing to primitive from parameters values

The variadic version also provides the actual number of arguments

val wrap_loc : 'a -> 'a Fexpr.located
val unwrap_loc : 'a Fexpr.located -> 'a
module Describe : sig ... end

All the necessary smart constructors to describe the structure of a fexpr primitive and its conversion from/to flambda.

Fetch primitive conversion function from registered descriptions