package catala
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=1408a1cce45c7d5990b981e83e7589c2
sha512=eb3b923aa1f743378b4a05e30f50be5d180dc862a716270d747a90e469017f42fa5fc41352f02fbbf59cd2560f91c4f1b32cf38d80085b105d9387b0aed2039d
doc/catala.shared_ast/Shared_ast/Expr/Box/index.html
Module Expr.BoxSource
Low-level handling of boxed expressions
This module contains helper functions for Bindlib, and wrappers to use boxed expressions.
We use the boxed_expr = naked_expr box marked type throughout, rather than the more straightforward expr box = naked_expr marked box, because the latter would force us to resolve the box every time we need to recover the annotation, which happens often. It's more efficient and convenient to add the annotation outside of the box, and delay its injection (using lift) to when the parent term gets built.
val lift :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t
Bindlib.boxInject the annotation within the box, to use e.g. when a gexpr box is required for building parent terms
val app0 :
('a, 't) Shared_ast__.Definitions.naked_gexpr ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.tThe app* functions allow building boxed expressions using Bindlib.apply_box and its variants, while correctly handling the expression annotations. Note that the function provided as argument should return a naked_gexpr and the expression annotation ('t) is provided as a separate argument.
val app1 :
(('a, 't1) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't1)
Catala_utils.Marked.t ->
((('a, 't1) Shared_ast__.Definitions.naked_gexpr, 't1) Catala_utils.Marked.t ->
('a, 't2) Shared_ast__.Definitions.naked_gexpr) ->
't2 ->
(('a, 't2) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't2)
Catala_utils.Marked.tval app2 :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
((('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
('a, 't) Shared_ast__.Definitions.naked_gexpr) ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.tval app3 :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
((('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
('a, 't) Shared_ast__.Definitions.naked_gexpr) ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.tval appn :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t
list ->
((('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t
list ->
('a, 't) Shared_ast__.Definitions.naked_gexpr) ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.tval app1n :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t
list ->
((('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t
list ->
('a, 't) Shared_ast__.Definitions.naked_gexpr) ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.tval app2n :
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t
list ->
((('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr, 't) Catala_utils.Marked.t
list ->
('a, 't) Shared_ast__.Definitions.naked_gexpr) ->
't ->
(('a, 't) Shared_ast__.Definitions.naked_gexpr Bindlib.box, 't)
Catala_utils.Marked.t