package reason
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Reason: Syntax & Toolchain for OCaml
Install
dune-project
Dependency
Authors
Maintainers
Sources
reason-3.8.2.tbz
sha256=7adcc45db20b8def82adf2712211fb8ed844328489752e8edf74281bc1eb2ef2
sha512=45822ecf4b19b892e1d150fd7f7a80af18df576b204647d4bbb9a18ac591a690f9b5338789ecccacb2d6b6354dbc32ff4a3574cc8b82b777e21cb8729f502f95
doc/reason.ocaml-migrate-parsetree/Reason_omp/Versions/index.html
Module Reason_omp.Versions
Abstracting an OCaml frontend
module type Ast = sig ... endAbstract view of a version of an OCaml Ast
type 'a _types = 'a
constraint
'a =
< structure : _
; signature : _
; toplevel_phrase : _
; core_type : _
; expression : _
; pattern : _
; case : _
; type_declaration : _
; type_extension : _
; extension_constructor : _
; out_value : _
; out_type : _
; out_class_type : _
; out_module_type : _
; out_sig_item : _
; out_type_extension : _
; out_phrase : _
; mapper : _ >type 'a get_structure = 'x constraint 'a _types = < structure : 'x.. >type 'a get_signature = 'x constraint 'a _types = < signature : 'x.. >type 'a get_toplevel_phrase = 'x constraint 'a _types = < toplevel_phrase : 'x.. >type 'a get_core_type = 'x constraint 'a _types = < core_type : 'x.. >type 'a get_expression = 'x constraint 'a _types = < expression : 'x.. >type 'a get_pattern = 'x constraint 'a _types = < pattern : 'x.. >type 'a get_case = 'x constraint 'a _types = < case : 'x.. >type 'a get_type_declaration = 'x constraint 'a _types = < type_declaration : 'x.. >type 'a get_type_extension = 'x constraint 'a _types = < type_extension : 'x.. >type 'a get_extension_constructor = 'x constraint 'a _types = < extension_constructor : 'x.. >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.. >type 'a get_mapper = 'x constraint 'a _types = < mapper : '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 ... endAn OCaml frontend versions an Ast, version number and some witnesses for conversion.
type 'types ocaml_version =
(module OCaml_version
with type Ast.Ast_mapper.mapper = 'types get_mapper
and 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
and type Ast.Parsetree.case = 'types get_case
and type Ast.Parsetree.core_type = 'types get_core_type
and type Ast.Parsetree.expression = 'types get_expression
and type Ast.Parsetree.extension_constructor =
'types get_extension_constructor
and type Ast.Parsetree.pattern = 'types get_pattern
and type Ast.Parsetree.signature = 'types get_signature
and type Ast.Parsetree.structure = 'types get_structure
and type Ast.Parsetree.toplevel_phrase = 'types get_toplevel_phrase
and type Ast.Parsetree.type_declaration = 'types get_type_declaration
and type Ast.Parsetree.type_extension = 'types get_type_extension)Representing an ocaml version in type language
Concrete frontend instances
module OCaml_402 : OCaml_version with module Ast = Ast_402val ocaml_402 : OCaml_402.types ocaml_versionmodule OCaml_403 : OCaml_version with module Ast = Ast_403val ocaml_403 : OCaml_403.types ocaml_versionmodule OCaml_404 : OCaml_version with module Ast = Ast_404val ocaml_404 : OCaml_404.types ocaml_versionmodule OCaml_405 : OCaml_version with module Ast = Ast_405val ocaml_405 : OCaml_405.types ocaml_versionmodule OCaml_406 : OCaml_version with module Ast = Ast_406val ocaml_406 : OCaml_406.types ocaml_versionmodule OCaml_407 : OCaml_version with module Ast = Ast_407val ocaml_407 : OCaml_407.types ocaml_versionmodule OCaml_408 : OCaml_version with module Ast = Ast_408val ocaml_408 : OCaml_408.types ocaml_versionmodule OCaml_409 : OCaml_version with module Ast = Ast_409val ocaml_409 : OCaml_409.types ocaml_versionmodule OCaml_410 : OCaml_version with module Ast = Ast_410val ocaml_410 : OCaml_410.types ocaml_versionmodule OCaml_411 : OCaml_version with module Ast = Ast_411val ocaml_411 : OCaml_411.types ocaml_versionmodule OCaml_412 : OCaml_version with module Ast = Ast_412val ocaml_412 : OCaml_412.types ocaml_versionmodule OCaml_413 : OCaml_version with module Ast = Ast_413val ocaml_413 : OCaml_413.types ocaml_versionmodule OCaml_414 : OCaml_version with module Ast = Ast_414val ocaml_414 : OCaml_414.types ocaml_versionmodule OCaml_500 : OCaml_version with module Ast = Ast_500val ocaml_500 : OCaml_500.types ocaml_versionmodule OCaml_current = OCaml_412val ocaml_current : OCaml_current.types ocaml_versionval all_versions : (module OCaml_version) listMigrating between different versions
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_comparisontype ('from, 'to_) migration_functions = {copy_structure : 'from get_structure -> 'to_ get_structure;copy_signature : 'from get_signature -> 'to_ get_signature;copy_toplevel_phrase : 'from get_toplevel_phrase -> 'to_ get_toplevel_phrase;copy_core_type : 'from get_core_type -> 'to_ get_core_type;copy_expression : 'from get_expression -> 'to_ get_expression;copy_pattern : 'from get_pattern -> 'to_ get_pattern;copy_case : 'from get_case -> 'to_ get_case;copy_type_declaration : 'from get_type_declaration -> 'to_ get_type_declaration;copy_type_extension : 'from get_type_extension -> 'to_ get_type_extension;copy_extension_constructor : 'from get_extension_constructor -> 'to_ get_extension_constructor;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;copy_mapper : 'from get_mapper -> 'to_ get_mapper;
}A record for migrating each AST construct between two known versions
val migration_identity : ('a, 'a) migration_functionsMigrating to the same version is no-op
val migration_compose :
('a, 'b) migration_functions ->
('b, 'c) migration_functions ->
('a, 'c) migration_functionsMigrations 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_migrationval migrate :
'from ocaml_version ->
'to_ ocaml_version ->
('from, 'to_) migration_functionsConvenience definitions
module Convert (A : OCaml_version) (B : OCaml_version) : sig ... endModule level migration
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page