sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Combi.MakeSourceTree representation of the definition of a combinatorial class
Note: the functions in Map should be bijections whenever possible. Not doing so is not a problem in itself, but we can predict what will happen:
class_trees.type _ class_tree = | One : unit class_tree| Scalar : K.t -> unit class_tree| Z : unit class_tree| Empty : 'a class_tree| Sampler : 'a Sampler.t -> 'a class_tree| Class : 'a combi_class -> 'a class_tree| Union : 'a class_tree list -> 'a class_tree| Product : 'a class_tree * 'b class_tree -> ('a * 'b) class_tree| Sequence : sequence_kind * 'a class_tree -> 'a list class_tree| Map : 'a class_tree * ('a -> 'b) -> 'b class_treeand 'a stub = | S_One : unit stub| S_Z : unit stub| S_Sampler : 'a Sampler.t -> 'a stub| S_Empty : 'a stub| S_Class : 'a combi_class -> 'a stub| S_Union : 'a solved_tree list -> 'a stub| S_Product : 'a solved_tree * 'b solved_tree -> ('a * 'b) stub| S_Sequence : sequence_kind * 'a solved_tree -> 'a list stub| S_Map : 'a solved_tree * ('a -> 'b) -> 'b stuband 'a combi_class = {name : Literal.Class.t;mutable class_tree : 'a class_tree option;mutable solved_tree : 'a solved_tree option;}Reference to a class_tree with a name. Allows for mutual recursion.
tupn generates a t class_tree where t is a tuple of size n Useful before a Map to build records.
val tup4 :
'a class_tree ->
'b class_tree ->
'c class_tree ->
'd class_tree ->
('a * 'b * 'c * 'd) class_treeval tup5 :
'a class_tree ->
'b class_tree ->
'c class_tree ->
'd class_tree ->
'e class_tree ->
('a * 'b * 'c * 'd * 'e) class_treemul_scalar k t multiplies the given tree t with a weight k. Used to skew the distribution without changing the generated objects.