package encore

  1. Overview
  2. Docs

Module Encore.BijectionSource

Sourcetype ('f, 't, 'is) kind =
  1. | Exn : ('a, 'a, exn) kind
  2. | Opt : ('a, 'a option, opt) kind
  3. | Res : ('a, ('a, error) result, res) kind
Sourceand exn =
  1. | E
Sourceand opt =
  1. | O
Sourceand res =
  1. | R
Sourceand error = [
  1. | `Msg of string
]
Sourcetype ('k, 'a, 'b) t = {
  1. to_ : 'a -> 'rb;
  2. of_ : 'b -> 'ra;
  3. kd : 'kd;
  4. tag : string * string;
} constraint 'k = < reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >
Sourcetype ('a, 'b) texn = (< reta : ('a, 'a, exn) kind ; retb : ('b, 'b, exn) kind >, 'a, 'b) t
Sourcetype ('a, 'b) topt = (< reta : ('a, 'a option, opt) kind ; retb : ('b, 'b option, opt) kind >, 'a, 'b) t
Sourcetype ('a, 'b) tres = (< reta : ('a, ('a, error) result, res) kind ; retb : ('b, ('b, error) result, res) kind >, 'a, 'b) t
Sourceval make : ('a, 'ra, 'kd) kind -> ('b, 'rb, 'kd) kind -> tag:(string * string) -> fwd:('a -> 'rb) -> bwd:('b -> 'ra) -> (< reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >, 'a, 'b) t
Sourceval fwd : (< reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >, 'a, 'b) t -> 'a -> 'rb
Sourceval bwd : (< reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >, 'a, 'b) t -> 'b -> 'ra
Sourceval make_exn : tag:(string * string) -> fwd:('a -> 'b) -> bwd:('b -> 'a) -> ('a, 'b) texn
Sourceval make_opt : tag:(string * string) -> fwd:('a -> 'b option) -> bwd:('b -> 'a option) -> ('a, 'b) topt
Sourceval make_res : tag:(string * string) -> fwd:('a -> ('b, error) result) -> bwd:('b -> ('a, error) result) -> ('a, 'b) tres
Sourceval flip : (< reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >, 'a, 'b) t -> (< reta : ('b, 'rb, 'kd) kind ; retb : ('a, 'ra, 'kd) kind >, 'b, 'a) t
Sourceval product : (< reta : ('a, 'ra, 'kd) kind ; retb : ('b, 'rb, 'kd) kind >, 'a, 'b) t -> (< reta : ('c, 'rc, 'kd) kind ; retb : ('d, 'rd, 'kd) kind >, 'c, 'd) t -> (< reta : ('a * 'c, 'ra * 'rc, 'kd) kind ; retb : ('b * 'd, 'rb * 'rd, 'kd) kind >, 'a * 'c, 'b * 'd) t
Sourceval obj3 : (('a * 'b) * 'c, 'a * 'b * 'c) texn
Sourceval obj4 : ((('a * 'b) * 'c) * 'd, 'a * 'b * 'c * 'd) texn
Sourceval obj5 : (((('a * 'b) * 'c) * 'd) * 'e, 'a * 'b * 'c * 'd * 'e) texn
Sourceval obj6 : ((((('a * 'b) * 'c) * 'd) * 'e) * 'f, 'a * 'b * 'c * 'd * 'e * 'f) texn
Sourcemodule Exn : sig ... end