Caml1999I037Q,Shape_reduce&result;@@(Resolved%Shape#Uid!t@@@@@7typing/shape_reduce.mliT!T:@@B@.Resolved_alias<#Uid!t@@@+@@@@@UprUp@@3C@*Unresolved=+!t@@@@@(V)V@@CD@,Approximated>&optionLB#Uid!t@@@@@@@@AWBW+@@\E@:Internal_error_missing_uid?@@JY|~KY|@@eF@@@A@@@@@NS@@@@h@@A@,print_result@&Stdlib&Format)formatter@@@@@@T@@@@@$unitF@@@@@@@@q\r\@@G@@Ӡ$Make@@$fuel#intA@@@@m  m  @@H@@/read_unit_shape)unit_name&stringQ@@@@@k!t@@@@@@@@@o  o  X@@I@@@&reduce@#Env!t@@@@@@!t@@@@@!t@@@@@@@@q f hq f @@M@@.reduce_for_uid@%!t@@@@@@!t@@@@@@@@@@@@@u  u  N@@ N@@@@l  v O R@ O@@@,local_reduce@I!t@@@@@@!t@@@@@!t@@@@@@@@z  z  @@0P@@4local_reduce_for_uid@l!t@@@@@@5!t@@@@@@@@@@@@@5~ L L6~ L @@PQ@@@c,Shape_reduce0D&p{'}d(Warnings0Ef{&)Unit_info0'T Χ@aR%Types0"|Vȷ`X .Type_immediacy00$ jbv\"k&%Subst0=aqT/!p+-Stdlib__Uchar0=H^V9>ɠ+Stdlib__Sys0b'8=OIn.Stdlib__String0 w_OA4D"Q~~+Stdlib__Set0ܔ@Z8XWaa2+Stdlib__Seq0?72#[O.Stdlib__Result0p~ !ԥ//+Stdlib__Map0*4ɇ2.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Digest0#z25I*.Stdlib__Buffer0,I[?z&Stdlib0t0VoS%{<F:%Shape0 M``ll)Primitive0dU=\I/}$Path0k.tbGmᠠ)Parsetree0v o[pY Y+Outcometree0BuG^)= 9c $Misc0Bpg]?[q)Longident0wP q;ɡ(Location0nBɊOn?7~ؠ)Load_path0,j " nn7ݠ,Identifiable0]/*N %Ident0>ЃzV)j⠠*Format_doc0uy@GmWUࠠ#Env0S B2*Data_types0v\3,Svh*Cmi_format0`M{?w}@0CamlinternalLazy0zY# #4#-8CamlinternalFormatBasics0|.e1R$|o5Build_path_prefix_map0DGl}%Y5Lhi(Asttypes0eT$BbRM dc@@@Caml1999T0377!C,Shape_reduceA+&resultA7typing/shape_reduce.mliSS@@;@@(Resolved%Shape#Uid!t@@@ @@T!T:@)ocaml.doc&_none_@@A / Shape reduction succeeded and a uid was found )T;*To@@@@@@@8B@.Resolved_alias<'#Uid!t@@@ B@@@ @@@UprAUp@*; Reduction led to an alias NUpOUp@@@@@@@]C@*Unresolved=K!t@@@ @@^V_V@H ) Result still contains [Comp_unit] terms lVmV@@@@@@@{D@,Approximated>&optionLp#Uid!t@@@ @@@ @@WW+@o F Reduction failed: it can arrive with first-class modules for example X,0X,{@@@@@@@E@:Internal_error_missing_uid?@@Y|~Y|@ D Reduction succeeded but no uid was found, this should never happen ZZ@@@@@@@F@@@A@@@@@S@ 8 The result of reducing a shape and looking for its uid RR@@@@@@@@@@@@#T#T+@@г%ShapeT/T4@°T5T8@@ưT9@ @@3@@@@@@#intA;@@#intA@@@@@@A@$charB;@@$charA@@@@@@A@&stringQ;@@&stringA@@@@@@@@%bytesC;@@%bytesA@@@@@@@@%floatD;@@%floatA@@@@@@@@$boolE;@@%falsec@@@$trued@@@@@A@@@@@@A@$unitF;@@"()e@@@@@A@@@@@ @A@ #exnG;@@@A@@@@@$@@@#effH;@@O@A@A@@@@@@-@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@=@@@%arrayJ;@@R@A%arrayA@@@@@@H@@@ $listK;@@S@A"[]f@@U@"::g@@@T@@b@ @@A@Y@@@@@e@@@ ;@@V@A$Noneh@@p@$Somei@@w@@@A@Y@@@@@z@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@@@@ .Assert_failure`#@@@@@J@@@@@@@@[@@AР=ocaml.warn_on_literal_patternԐ@@0Division_by_zero]#@@@Aڠ  @+End_of_file\#$@@@A⠰@'FailureY#,@'@@A렰@0Invalid_argumentX#5@0@@A$#@-Match_failureV#>@@=@9@;@@a@@A54@)Not_foundZ#O@@@A =<@-Out_of_memoryW#W@@@AED@.Stack_overflow^#_@@@AM L @.Sys_blocked_io_#g@@@A%U(T(@)Sys_error[#o@j@@A.^1]1@:Undefined_recursive_modulea#x@@w@s@u@@h@@A?oBnB@:Continuation_already_takenb#@@@AGwJvJ@&Stdlibn;@@@A@@@@@@@@AV@@@@XUTQP@PP@@@P@P@#LL|Upt}Up@.@гN%ShapeUpUp@VUpUp@@ZUpUp@ @@d @@г]&resultUp^@@dð_@@@@a_^@^^@@@^@^@#ZZVV@C@г\%ShapeVV@cVa@b@@jc@@@@ecb@bb@@@b@b@#^^W W@>@г`&optionW%V@гb%ShapeWW@jWW"@@nW#W$@ @@x @@@o@@@@qܐon@nn@@@n@n@#jjY|h@Y@@@k퐠ih@hh@@@h@h@@A@dcb@bb@@@b@b@@3@??@@@@@@=@Ap@,print_result&\'\@б@г&Format)formatter5\6\@ 9\:\ @@@@@@3cbbccccc@aE>@A @@б@гK&resultK\L\@@ @@@@@г"$unitX\Y\@@ @@@@@@@@@@# @@@+@@ @@(3@@@j\@@xG@@@@.$MakeBwl  xl  @O@@Т@@l  l  @Б$fuelm  m  @г#intm  m  @@ @@@3@\z4@A@@@m   @@H@@ @@/read_unit_shapeo  $o  3@б)unit_nameг&stringo  @o  F@@ @@@3@#6!@A@@гJ&optiono  Ro  X@г!t%Shapeo  Jo  O@ o  Po  Q@@@@@@" @@@ @@@'@@8/@@ @@,o  6#@@@o  &@@I@@(@@3@iT@M @@3@8O @A3@\@Al  p Y ^@@Б&reduceq f lq f r@б@г#Env!t#Envq f uq f x@ q f yq f z@@@@@@ p3DCCDDDDD@@A @@б@г!t%Shape/q f ~0q f @ 3q f 4q f @@@@@@ q @@г.!t%ShapeEq f Fq f @ Iq f Jq f @@@@@@ r/ @@@@@ s@@ t4& @@@<@@ u @@ v9D@@@\q f h@@jM@@@@?.reduce_for_uidgu  #hu  1@б@гb!t#Envvu  4wu  7@ zu  8{u  9@@@@@@ w3@(@A @@б@гy!t%Shapeu  =u  B@ u  Cu  D@@@@@@ x @@г&resultu  Hu  N@@ @@@ y'@@@@@ z@@ {, @@@4@@ | @@ }1<@@@u  @ Perform weak reduction and return the head's uid if any. If reduction was incomplete the partially reduced shape is returned. s  t  @@@@@@@N@@"@@@@@@@P@x@q"@@3@Us$@A3@=@Ap Y bv O R@@@f@@Ő  The [Make] functor is used to generate a reduction function for shapes. It is parametrized by: - a function to load the shape of an external compilation unit - some fuel, which is used to bound recursion when dealing with recursive shapes introduced by recursive modules. (FTR: merlin currently uses a fuel of 10, which seems to be enough for most practical examples) Usage warning: To ensure good performances, every reduction made with the same instance of that functor share the same ident-based memoization tables. Such an instance should only be used to perform reduction inside a unique compilation unit to prevent conflicting entries in these memoization tables. ^!!k  @@@@@@@l  @@,local_reducez  z  @б@г!t#Envz  z  @  z   z  @@@@@@ ~354455555@x@@|@u1@@@n@@A@@@@@@@@@@@=@A$@@б@г!!t%Shape8z  9z  @ 10/.-,+*)('&%$#"! @@0OB\*V|C3@@@(Asttypes0eT$BbRM dc5Build_path_prefix_map0DGl}%Y5Lhi8CamlinternalFormatBasics0|.e1R$|o0CamlinternalLazy0zY# #4#-*Cmi_format0`M{?w}@*Data_types0v\3,Svh0S B2*Format_doc0uy@GmWUࠠ%Ident0>ЃzV)j⠠,Identifiable0]/*N )Load_path0,j " nn7ݠ(Location0nBɊOn?7~ؠ)Longident0wP q;ɡ$Misc0Bpg]?[q+Outcometree0BuG^)= 9c )Parsetree0v o[pY Y$Path0k.tbGmᠠ)Primitive0dU=\I/}c0 M``llB0D&p{'}d&Stdlib0t0VoS%{<F:.Stdlib__Buffer0,I[?z.Stdlib__Digest0#z25I*.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Either0HD ?|>.Stdlib__Format00FClW/Stdlib__Hashtbl0(L%bԠ,Stdlib__Lazy0$1mlࠠ.Stdlib__Lexing0^m|e+Stdlib__Map0*4ɇ2ɠ%Subst0=aqT/!p+.Type_immediacy00$ jbv\"k&%Types0"|Vȷ`X )Unit_info0'T Χ@aR(Warnings0Ef{&@0D&p{'}dANC2@@1;@ǐ)@@@@S@F @f>@@M@@@[@8+@@P@@