Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file lualib.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448moduletypeUSERTYPE=sigtype'at(* type parameter will be Lua value *)valtname:string(* name of this type, for projection errors *)valeq:('a->'a->bool)->'at->'at->boolvalto_string:('a->string)->'at->stringendmoduletypeTYPEVIEW=sigtype'acombinedtype'at(* the individual type of which this is a view *)valmakemap:('acombined,'b,'b)Luavalue.ep->('b->string->'at)->('at,'b,'b)Luavalue.ependmoduletypeCOMBINED_CORE=sigtype'aalso_tmoduletypeVIEW=TYPEVIEWwithtype'acombined='aalso_tmoduleTV1:VIEWmoduleTV2:VIEWmoduleTV3:VIEWmoduleTV4:VIEWmoduleTV5:VIEWmoduleTV6:VIEWmoduleTV7:VIEWmoduleTV8:VIEWmoduleTV9:VIEWmoduleTV10:VIEWendmoduletypeCOMBINED_VIEWS=sigtype'atincludeCOMBINED_COREwithtype'aalso_t='atendmoduletypeCOMBINED_TYPE=sigincludeUSERTYPEincludeCOMBINED_COREwithtype'aalso_t='atendmoduletypeCORE=sigmoduleV:Luavalue.Svalerror:string->'a(* error fallback *)valgetglobal:V.state->V.value->V.valuevalfallback:string->V.state->V.valuelist->V.valuelistvalsetfallback:V.state->string->V.value->V.value(* sets fallback, returns previous one *)valapply:V.value->V.state->V.valuelist->V.valuelistvalregister_globals:(string*V.value)list->V.state->unitvalregister_module:string->(string*V.value)list->V.state->unitendmoduletypeBARECODE=functor(C:CORE)->sigvalinit:C.V.state->unitendmoduletypeUSERCODE=sigtype'auserdata'(* the userdata' tycon of the core on which lib depends *)moduleM:functor(C:COREwithtype'aV.userdata'='auserdata')->sigvalinit:C.V.state->unitendendmoduleUnused=structmoduleType:USERTYPE=structtype'at=unitlettname="unused type"leteq___=trueletto_string__="<this can't happen -- value of unused type>"end(* Type *)moduleBare=functor(C:CORE)->structend(*Unused.Bare*)moduleTypeful(L:USERCODE)=structtype'auserdata'='aL.userdata'moduleM(C:COREwithtype'aV.userdata'='auserdata')=structletinit_=()end(*M*)end(*Unused.Typeful*)endmoduleCombine=structmoduleT10(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE)(T6:USERTYPE)(T7:USERTYPE)(T8:USERTYPE)(T9:USERTYPE)(T10:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.twithtype'aTV6.t='aT6.twithtype'aTV7.t='aT7.twithtype'aTV8.t='aT8.twithtype'aTV9.t='aT9.twithtype'aTV10.t='aT10.t=structtype'at=|T1of'aT1.t|T2of'aT2.t|T3of'aT3.t|T4of'aT4.t|T5of'aT5.t|T6of'aT6.t|T7of'aT7.t|T8of'aT8.t|T9of'aT9.t|T10of'aT10.ttype'aalso_t='atletallnames=[T1.tname;T2.tname;T3.tname;T4.tname;T5.tname;T6.tname;T7.tname;T8.tname;T9.tname;T10.tname]lettname=String.concat" or "(List.filter((<>)Unused.Type.tname)allnames)lettname=matchtnamewith""->Unused.Type.tname|n->nleteqeqvsxy=matchx,ywith|T1x,T1y->T1.eqeqvsxy|T2x,T2y->T2.eqeqvsxy|T3x,T3y->T3.eqeqvsxy|T4x,T4y->T4.eqeqvsxy|T5x,T5y->T5.eqeqvsxy|T6x,T6y->T6.eqeqvsxy|T7x,T7y->T7.eqeqvsxy|T8x,T8y->T8.eqeqvsxy|T9x,T9y->T9.eqeqvsxy|T10x,T10y->T10.eqeqvsxy|_,_->falseletto_stringvsx=matchxwith|T1x->T1.to_stringvsx|T2x->T2.to_stringvsx|T3x->T3.to_stringvsx|T4x->T4.to_stringvsx|T5x->T5.to_stringvsx|T6x->T6.to_stringvsx|T7x->T7.to_stringvsx|T8x->T8.to_stringvsx|T9x->T9.to_stringvsx|T10x->T10.to_stringvsxmoduletypeVIEW=TYPEVIEWwithtype'acombined='atmoduleV=LuavaluemoduleTV1=structtype'acombined='aalso_ttype'at='aT1.tletmakemap(upper:('acombined,'b,'b)V.ep)fail={V.embed=(funx->upper.V.embed(T1x));V.project=(funx->matchupper.V.projectxwith|T1x->x|_->failxT1.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT1_->true|_->false)}endmoduleTV2=structtype'acombined='aalso_ttype'at='aT2.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T2x));V.project=(funx->matchupper.V.projectxwith|T2x->x|_->failxT2.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT2_->true|_->false)}endmoduleTV3=structtype'acombined='aalso_ttype'at='aT3.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T3x));V.project=(funx->matchupper.V.projectxwith|T3x->x|_->failxT3.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT3_->true|_->false)}endmoduleTV4=structtype'acombined='aalso_ttype'at='aT4.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T4x));V.project=(funx->matchupper.V.projectxwith|T4x->x|_->failxT4.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT4_->true|_->false)}endmoduleTV5=structtype'acombined='aalso_ttype'at='aT5.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T5x));V.project=(funx->matchupper.V.projectxwith|T5x->x|_->failxT5.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT5_->true|_->false)}endmoduleTV6=structtype'acombined='aalso_ttype'at='aT6.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T6x));V.project=(funx->matchupper.V.projectxwith|T6x->x|_->failxT6.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT6_->true|_->false)}endmoduleTV7=structtype'acombined='aalso_ttype'at='aT7.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T7x));V.project=(funx->matchupper.V.projectxwith|T7x->x|_->failxT7.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT7_->true|_->false)}endmoduleTV8=structtype'acombined='aalso_ttype'at='aT8.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T8x));V.project=(funx->matchupper.V.projectxwith|T8x->x|_->failxT8.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT8_->true|_->false)}endmoduleTV9=structtype'acombined='aalso_ttype'at='aT9.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T9x));V.project=(funx->matchupper.V.projectxwith|T9x->x|_->failxT9.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT9_->true|_->false)}endmoduleTV10=structtype'acombined='aalso_ttype'at='aT10.tletmakemapupperfail={V.embed=(funx->upper.V.embed(T10x));V.project=(funx->matchupper.V.projectxwith|T10x->x|_->failxT10.tname);V.is=(funx->upper.V.isx&&matchupper.V.projectxwithT10_->true|_->false)}endend(* Combine.T10 *)moduleT1(T1:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.t=T10(T1)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT2(T1:USERTYPE)(T2:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.t=T10(T1)(T2)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT3(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.t=T10(T1)(T2)(T3)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT4(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.t=T10(T1)(T2)(T3)(T4)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT5(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.t=T10(T1)(T2)(T3)(T4)(T5)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT6(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE)(T6:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.twithtype'aTV6.t='aT6.t=T10(T1)(T2)(T3)(T4)(T5)(T6)(Unused.Type)(Unused.Type)(Unused.Type)(Unused.Type)moduleT7(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE)(T6:USERTYPE)(T7:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.twithtype'aTV6.t='aT6.twithtype'aTV7.t='aT7.t=T10(T1)(T2)(T3)(T4)(T5)(T6)(T7)(Unused.Type)(Unused.Type)(Unused.Type)moduleT8(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE)(T6:USERTYPE)(T7:USERTYPE)(T8:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.twithtype'aTV6.t='aT6.twithtype'aTV7.t='aT7.twithtype'aTV8.t='aT8.t=T10(T1)(T2)(T3)(T4)(T5)(T6)(T7)(T8)(Unused.Type)(Unused.Type)moduleT9(T1:USERTYPE)(T2:USERTYPE)(T3:USERTYPE)(T4:USERTYPE)(T5:USERTYPE)(T6:USERTYPE)(T7:USERTYPE)(T8:USERTYPE)(T9:USERTYPE):COMBINED_TYPEwithtype'aTV1.t='aT1.twithtype'aTV2.t='aT2.twithtype'aTV3.t='aT3.twithtype'aTV4.t='aT4.twithtype'aTV5.t='aT5.twithtype'aTV6.t='aT6.twithtype'aTV7.t='aT7.twithtype'aTV8.t='aT8.twithtype'aTV9.t='aT9.t=T10(T1)(T2)(T3)(T4)(T5)(T6)(T7)(T8)(T9)(Unused.Type)moduleC10(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata')(C6:USERCODEwithtype'auserdata'='aC1.userdata')(C7:USERCODEwithtype'auserdata'='aC1.userdata')(C8:USERCODEwithtype'auserdata'='aC1.userdata')(C9:USERCODEwithtype'auserdata'='aC1.userdata')(C10:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=structtype'auserdata'='aC1.userdata'moduleM(C:COREwithtype'aV.userdata'='auserdata')=structmoduleM1=C1.M(C)moduleM2=C2.M(C)moduleM3=C3.M(C)moduleM4=C4.M(C)moduleM5=C5.M(C)moduleM6=C6.M(C)moduleM7=C7.M(C)moduleM8=C8.M(C)moduleM9=C9.M(C)moduleM10=C10.M(C)letinitg=beginM1.initg;M2.initg;M3.initg;M4.initg;M5.initg;M6.initg;M7.initg;M8.initg;M9.initg;M10.initgendend(*Combine.C10.M*)end(* Combine.C10*)moduleC1(C1:USERCODE):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC2(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC3(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC4(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC5(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(C5)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC6(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata')(C6:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(C5)(C6)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC7(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata')(C6:USERCODEwithtype'auserdata'='aC1.userdata')(C7:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(C5)(C6)(C7)(Unused.Typeful(C1))(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC8(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata')(C6:USERCODEwithtype'auserdata'='aC1.userdata')(C7:USERCODEwithtype'auserdata'='aC1.userdata')(C8:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(C5)(C6)(C7)(C8)(Unused.Typeful(C1))(Unused.Typeful(C1))moduleC9(C1:USERCODE)(C2:USERCODEwithtype'auserdata'='aC1.userdata')(C3:USERCODEwithtype'auserdata'='aC1.userdata')(C4:USERCODEwithtype'auserdata'='aC1.userdata')(C5:USERCODEwithtype'auserdata'='aC1.userdata')(C6:USERCODEwithtype'auserdata'='aC1.userdata')(C7:USERCODEwithtype'auserdata'='aC1.userdata')(C8:USERCODEwithtype'auserdata'='aC1.userdata')(C9:USERCODEwithtype'auserdata'='aC1.userdata'):USERCODEwithtype'auserdata'='aC1.userdata'=C10(C1)(C2)(C3)(C4)(C5)(C6)(C7)(C8)(C9)(Unused.Typeful(C1))endmoduleWithType(T:USERTYPE)(L:BARECODE):USERCODEwithtype'auserdata'='aT.t=structtype'auserdata'='aT.tmoduleM(C:COREwithtype'aV.userdata'='auserdata')=structmoduleM'=L(C)letinitg=M'.initgend(*M*)end(*WithType*)moduleEmpty=structmoduleType=Combine.T1(Unused.Type)moduleLibrary=structtype'auserdata'='aType.tmoduleM(C:COREwithtype'aV.userdata'='auserdata')=structletinit_=()end(*M*)end(*Empty.Library*)endmoduleLift(T:COMBINED_TYPE)(View:TYPEVIEWwithtype'at='aT.t):COMBINED_VIEWSwithtype'at='aView.combinedwithtype'aTV1.t='aT.TV1.twithtype'aTV2.t='aT.TV2.twithtype'aTV3.t='aT.TV3.twithtype'aTV4.t='aT.TV4.twithtype'aTV5.t='aT.TV5.twithtype'aTV6.t='aT.TV6.twithtype'aTV7.t='aT.TV7.twithtype'aTV8.t='aT.TV8.twithtype'aTV9.t='aT.TV9.twithtype'aTV10.t='aT.TV10.t=structtype'at='aView.combinedtype'aalso_t='atmoduletypeVIEW=TYPEVIEWwithtype'acombined='aalso_tmoduleLift(T:T.VIEW):VIEWwithtype'at='aT.t=structtype'acombined='aalso_ttype'at='aT.tletmakemapupperfail=letfail'xy=ignore(failxy);assertfalseinletupper=View.makemapupperfail'inT.makemapupperfailendmoduleTV1=Lift(T.TV1)moduleTV2=Lift(T.TV2)moduleTV3=Lift(T.TV3)moduleTV4=Lift(T.TV4)moduleTV5=Lift(T.TV5)moduleTV6=Lift(T.TV6)moduleTV7=Lift(T.TV7)moduleTV8=Lift(T.TV8)moduleTV9=Lift(T.TV9)moduleTV10=Lift(T.TV10)end(* Lift *)