123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217openBrowse_rawtypesyntax_info=Query_protocol.syntax_doc_resultoptionletsyntax_doc_urlendpoint=letbase_url="https://v2.ocaml.org/releases/4.14/htmlman/"inbase_url^endpointletget_syntax_doccursor_locnode:syntax_info=matchnodewith|(_,Type_kind_)::(_,Type_declaration_)::(_,With_constraint(Twith_typesubst_))::_->Some{name="Destructive substitution";description="Behaves like normal signature constraints but removes the redefined \
type or module from the signature.";documentation=syntax_doc_url"signaturesubstitution.html#ss:destructive-substitution"}|(_,Type_kind_)::(_,Type_declaration_)::(_,Signature_item({sig_desc=Tsig_typesubst_;_},_))::_->Some{name="Local substitution";description="Behaves like destructive substitution but is introduced during the \
specification of the signature, and will apply to all the items \
that follow.";documentation=syntax_doc_url"signaturesubstitution.html#ss:local-substitution"}|(_,Module_type_)::(_,Module_type_)::(_,Module_type_constraint(Tmodtype_explicit{mty_desc=Tmty_with(_,[(_,_,Twith_modtype_)]);_}))::_->Some{name="Module substitution";description="Behaves like type substitutions but are useful to refine an \
abstract module type in a signature into a concrete module type,";documentation=syntax_doc_url"signaturesubstitution.html#ss:module-type-substitution"}|(_,Type_kindTtype_open)::(_,Type_declaration{typ_private;_})::_->lete_name="Extensible Variant Type"inlete_description="Can be extended with new variant constructors using `+=`."inlete_url="extensiblevariants.html"inletname,description,url=matchtyp_privatewith|Public->(e_name,e_description,e_url)|Private->(Format.sprintf"Private %s"e_name,Format.sprintf"%s. Prevents new constructors from being declared directly, but \
allows extension constructors to be referred to in interfaces."e_description,"extensiblevariants.html#ss:private-extensible")inSome{name;description;documentation=syntax_doc_urlurl}|(_,Constructor_declaration_)::(_,Type_kind(Ttype_variant_))::(_,Type_declaration{typ_private;_})::_|_::(_,Constructor_declaration_)::(_,Type_kind(Ttype_variant_))::(_,Type_declaration{typ_private;_})::_->letv_name="Variant Type"inletv_description="Represent's data that may take on multiple different forms."inletv_url="typedecl.html#ss:typedefs"inletname,description,url=matchtyp_privatewith|Public->(v_name,v_description,v_url)|Private->(Format.sprintf"Private %s"v_name,Format.sprintf"%s This type is private, values cannot be constructed directly \
but can be de-structured as usual."v_description,"privatetypes.html#ss:private-types-variant")inSome{name;description;documentation=syntax_doc_urlurl}|(_,Core_type_)::(_,Core_type_)::(_,Label_declaration_)::(_,Type_kind(Ttype_record_))::(_,Type_declaration{typ_private;_})::_->letr_name="Record Type"inletr_description="Defines variants with a fixed set of fields"inletr_url="typedecl.html#ss:typedefs"inletname,description,url=matchtyp_privatewith|Public->(r_name,r_description,r_url)|Private->(Format.sprintf"Private %s"r_name,Format.sprintf"%s This type is private, values cannot be constructed directly \
but can be de-structured as usual."r_description,"privatetypes.html#ss:private-types-variant")inSome{name;description;documentation=syntax_doc_urlurl}|(_,Type_kind(Ttype_variant_))::(_,Type_declaration{typ_private=Public;_})::_->Some{name="Empty Variant Type";description="An empty variant type.";documentation=syntax_doc_url"emptyvariants.html"}|(_,Type_kindTtype_abstract)::(_,Type_declaration{typ_private=Public;typ_manifest=None;_})::_->Some{name="Abstract Type";description="Define variants with arbitrary data structures, including other \
variants, records, and functions";documentation=syntax_doc_url"typedecl.html#ss:typedefs"}|(_,Type_kindTtype_abstract)::(_,Type_declaration{typ_private=Private;_})::_->Some{name="Private Type Abbreviation";description="Declares a type that is distinct from its implementation type \
`typexpr`.";documentation=syntax_doc_url"privatetypes.html#ss:private-types-abbrev"}|(_,Expression_)::(_,Expression_)::(_,Value_binding_)::(_,Structure_item({str_desc=Tstr_value(Recursive,_);_},_))::_->Some{name="Recursive value definition";description="Supports a certain class of recursive definitions of non-functional \
values.";documentation=syntax_doc_url"letrecvalues.html"}|(_,Module_expr_)::(_,Module_type{mty_desc=Tmty_typeof_;_})::_->Some{name="Recovering module type";description="Expands to the module type (signature or functor type) inferred for \
the module expression `module-expr`. ";documentation=syntax_doc_url"moduletypeof.html"}|(_,Module_expr_)::(_,Module_expr_)::(_,Module_binding_)::(_,Structure_item({str_desc=Tstr_recmodule_;_},_))::_->Some{name="Recursive module";description="A simultaneous definition of modules that can refer recursively to \
each others.";documentation=syntax_doc_url"recursivemodules.html"}|(_,Expression_)::(_,Expression_)::(_,Case_)::(_,Expression_)::(_,Value_binding{vb_expr={exp_extra=[(Texp_newtype'(_,loc),_,_)];exp_loc;_};_})::_->(letin_range=cursor_loc.Lexing.pos_cnum-1>exp_loc.loc_start.pos_cnum&&cursor_loc.Lexing.pos_cnum<=loc.loc.loc_end.pos_cnum+1inmatchin_rangewith|true->Some{name="Locally Abstract Type";description="Type constructor which is considered abstract in the scope of the \
sub-expression and replaced by a fresh type variable.";documentation=syntax_doc_url"locallyabstract.html"}|false->None)|(_,Module_expr_)::(_,Module_expr_)::(_,Expression{exp_desc=Texp_pack_;_})::_->Some{name="First class module";description="Converts a module (structure or functor) to a value of the core \
language that encapsulates the module.";documentation=syntax_doc_url"firstclassmodules.html"}|_->None