Module Mixed_block_shape
A mixed block shape is essentially the runtime representation of a block (i.e.) value prefix and flat suffix), and the permutation from the type definition in the surface language to that representation.
module Singleton_mixed_block_element : sig ... endval print : Stdlib.Format.formatter -> _ Mixed_block_shape.t -> unitval of_mixed_block_elements :
print_locality:(Stdlib.Format.formatter -> 'a -> unit) ->
'a Lambda.mixed_block_element array ->
'a Mixed_block_shape.tval value_prefix :
'a Mixed_block_shape.t ->
'a Mixed_block_shape.Singleton_mixed_block_element.t arrayval flat_suffix :
'a Mixed_block_shape.t ->
'a Mixed_block_shape.Singleton_mixed_block_element.t arrayval value_prefix_len : 'a Mixed_block_shape.t -> intval flat_suffix_len : 'a Mixed_block_shape.t -> intval flattened_reordered_shape :
'a Mixed_block_shape.t ->
'a Mixed_block_shape.Singleton_mixed_block_element.t arrayAccess to the shape, as flattened and following the runtime restriction.
val lookup_path_producing_new_indexes :
'a Mixed_block_shape.t ->
int list ->
int listval new_indexes_to_old_indexes : 'a Mixed_block_shape.t -> int arrayval new_block_length : 'a Mixed_block_shape.t -> intval new_index_to_old_path : 'a Mixed_block_shape.t -> int -> int list