sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
module type Ast = sig ... end
Abstract view of a version of an OCaml Ast
type 'a get_out_value = 'x constraint 'a _types = < out_value : 'x.. >
type 'a get_out_type = 'x constraint 'a _types = < out_type : 'x.. >
type 'a get_out_class_type = 'x constraint 'a _types = < out_class_type : 'x.. >
type 'a get_out_module_type = 'x constraint 'a _types = < out_module_type : 'x.. >
type 'a get_out_sig_item = 'x constraint 'a _types = < out_sig_item : 'x.. >
type 'a get_out_type_extension = 'x constraint 'a _types = < out_type_extension : 'x.. >
type 'a get_out_phrase = 'x constraint 'a _types = < out_phrase : 'x.. >
A version of the OCaml frontend packs the ast with type witnesses so that equalities can be recovered dynamically.
module type OCaml_version = sig ... end
An OCaml frontend versions an Ast, version number and some witnesses for conversion.
type 'types ocaml_version =
(module OCaml_version
with type Ast.Outcometree.out_class_type = 'types get_out_class_type
and type Ast.Outcometree.out_module_type = 'types get_out_module_type
and type Ast.Outcometree.out_phrase = 'types get_out_phrase
and type Ast.Outcometree.out_sig_item = 'types get_out_sig_item
and type Ast.Outcometree.out_type = 'types get_out_type
and type Ast.Outcometree.out_type_extension = 'types get_out_type_extension
and type Ast.Outcometree.out_value = 'types get_out_value)
Representing an ocaml version in type language
module OCaml_402 : OCaml_version with module Ast = Ast_402
val ocaml_402 : OCaml_402.types ocaml_version
module OCaml_403 : OCaml_version with module Ast = Ast_403
val ocaml_403 : OCaml_403.types ocaml_version
module OCaml_404 : OCaml_version with module Ast = Ast_404
val ocaml_404 : OCaml_404.types ocaml_version
module OCaml_405 : OCaml_version with module Ast = Ast_405
val ocaml_405 : OCaml_405.types ocaml_version
module OCaml_406 : OCaml_version with module Ast = Ast_406
val ocaml_406 : OCaml_406.types ocaml_version
module OCaml_407 : OCaml_version with module Ast = Ast_407
val ocaml_407 : OCaml_407.types ocaml_version
module OCaml_408 : OCaml_version with module Ast = Ast_408
val ocaml_408 : OCaml_408.types ocaml_version
module OCaml_409 : OCaml_version with module Ast = Ast_409
val ocaml_409 : OCaml_409.types ocaml_version
module OCaml_410 : OCaml_version with module Ast = Ast_410
val ocaml_410 : OCaml_410.types ocaml_version
module OCaml_411 : OCaml_version with module Ast = Ast_411
val ocaml_411 : OCaml_411.types ocaml_version
module OCaml_412 : OCaml_version with module Ast = Ast_412
val ocaml_412 : OCaml_412.types ocaml_version
module OCaml_413 : OCaml_version with module Ast = Ast_413
val ocaml_413 : OCaml_413.types ocaml_version
module OCaml_414 : OCaml_version with module Ast = Ast_414
val ocaml_414 : OCaml_414.types ocaml_version
module OCaml_500 : OCaml_version with module Ast = Ast_500
val ocaml_500 : OCaml_500.types ocaml_version
module OCaml_51 : OCaml_version with module Ast = Ast_51
val ocaml_51 : OCaml_51.types ocaml_version
module OCaml_52 : OCaml_version with module Ast = Ast_52
val ocaml_52 : OCaml_52.types ocaml_version
module OCaml_current = OCaml_51
val ocaml_current : OCaml_current.types ocaml_version
val all_versions : (module OCaml_version) list
type ('a, 'b) type_comparison =
| Lt : ('a, 'b) type_comparison
| Eq : ('a, 'a) type_comparison
| Gt : ('a, 'b) type_comparison
val compare_ocaml_version :
'a ocaml_version ->
'b ocaml_version ->
('a, 'b) type_comparison
type ('from, 'to_) migration_functions = {
copy_out_value : 'from get_out_value -> 'to_ get_out_value;
copy_out_type : 'from get_out_type -> 'to_ get_out_type;
copy_out_class_type : 'from get_out_class_type -> 'to_ get_out_class_type;
copy_out_module_type : 'from get_out_module_type -> 'to_ get_out_module_type;
copy_out_sig_item : 'from get_out_sig_item -> 'to_ get_out_sig_item;
copy_out_type_extension : 'from get_out_type_extension ->
'to_ get_out_type_extension;
copy_out_phrase : 'from get_out_phrase -> 'to_ get_out_phrase;
}
A record for migrating each AST construct between two known versions
val migration_identity : ('a, 'a) migration_functions
Migrating to the same version is no-op
val migration_compose :
('a, 'b) migration_functions ->
('b, 'c) migration_functions ->
('a, 'c) migration_functions
Migrations can be composed
Represent the next or previous version of an Ast
type 'from immediate_migration =
| No_migration : 'from immediate_migration
Cannot migrate earliest or latest supported version
*)| Immediate_migration : ('from, 'to_) migration_functions
* 'to_ ocaml_version -> 'from immediate_migration
Pack the migration functions and the new version
*)val immediate_migration :
'types ocaml_version ->
[< `Next | `Previous ] ->
'types immediate_migration
val migrate :
'from ocaml_version ->
'to_ ocaml_version ->
('from, 'to_) migration_functions
module Convert (A : OCaml_version) (B : OCaml_version) : sig ... end
Module level migration