(module Option-struct (planet chongkai/sml) (#%module-begin (Program: (SIGDECTopDec: (SigDec: (SigBind: (SigId: Option-sig) (SIGSigExp: (SEQSpec: (VALSpec: (ValDesc: (VId: getOpt) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|))))) (VARTy: (TyVar: |'a|))))) (SEQSpec: (VALSpec: (ValDesc: (VId: isSome) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: valOf) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (VARTy: (TyVar: |'a|))))) (SEQSpec: (VALSpec: (ValDesc: (VId: filter) (ARROWTy: (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))) (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: map) (ARROWTy: (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'b|)))) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: app) (ARROWTy: (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: unit-type)))) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type)))))) (SEQSpec: (VALSpec: (ValDesc: (VId: join) (ARROWTy: (CONTy: (Tyseq: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type))) (LongTyCon: option-type)) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type))))) (SEQSpec: (VALSpec: (ValDesc: (VId: compose) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'b|)))) (TyRow: (Lab: |2|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'c|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type))))))) (PARTy: (ARROWTy: (VARTy: (TyVar: |'c|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type))))))) (SEQSpec: (VALSpec: (ValDesc: (VId: mapPartial) (ARROWTy: (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type)))) (PARTy: (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type))))))) (VALSpec: (ValDesc: (VId: composePartial) (ARROWTy: (RECORDTy: (TyRow: (Lab: |1|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type)))) (TyRow: (Lab: |2|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'c|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type))))))) (PARTy: (ARROWTy: (VARTy: (TyVar: |'c|)) (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: option-type))))))))))))))))))) (STRDECTopDec: (STRUCTUREStrDec: (StrBind: (StrId: Option-struct) (SEALStrExp: (STRUCTStrExp: (SEQStrDec: (SEQStrDec: (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: getOpt))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10542))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: v))))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)))))))) (ATExp: (IDAtExp: (LongVId: v)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: NONE))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: a))))))))) (ATExp: (IDAtExp: (LongVId: a))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10542)))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: isSome))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10543))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (WILDCARDAtPat:)))))))) (ATExp: (IDAtExp: (LongVId: true)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: NONE))))) (ATExp: (IDAtExp: (LongVId: false))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10543)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: valOf))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10544))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: v))))))))) (ATExp: (IDAtExp: (LongVId: v)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: NONE))))) (RAISEExp: (ATExp: (IDAtExp: (LongVId: Option)))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10544)))))))))))))))) (SEQStrDec: (SEQStrDec: (EMPTYStrDec:) (EMPTYStrDec:)) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: filter))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10545))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10546))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: p))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: true))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (IDAtExp: (LongVId: x)))))) (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: false))) (ATExp: (IDAtExp: (LongVId: NONE))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: p))) (IDAtExp: (LongVId: x)))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10545))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10546))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: map))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10547))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10548))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: NONE))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: x))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: x))))))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10547))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10548))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: app))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10549))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10550))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: NONE))))))) (ATExp: (RECORDAtExp:))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: x))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: x))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10549))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10550))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: join))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10551))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: NONE))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: x))))))))) (ATExp: (IDAtExp: (LongVId: x))))))))) (PARAtExp: (ATExp: (PARAtExp: (ATExp: (IDAtExp: (LongVId: _id10551)))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: mapPartial))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10552))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10553))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: NONE))))))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: x))))))))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: x))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10552))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10553))))))))))))))))))) (SEQStrDec: (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: compose))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10554))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10555))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: g))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: y))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: SOME))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: y))))))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: g))) (IDAtExp: (LongVId: x)))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10554))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10555))))))))))))))))))) (DECStrDec: (VALDec: (TyVarseq:) (RECValBind: (PLAINValBind: (ATPat: (IDAtPat: (LongVId: composePartial))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10556))) (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: _id10557))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: f))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: g))))))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: x))))))) (APPExp: (ATExp: (PARAtExp: (FNExp: (Match: (Mrule: (ATPat: (IDAtPat: (LongVId: NONE))) (ATExp: (IDAtExp: (LongVId: NONE)))) (Match: (Mrule: (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: y))))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: f))) (IDAtExp: (LongVId: y))))))))))) (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: g))) (IDAtExp: (LongVId: x)))))))))))) (PARAtExp: (ATExp: (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: _id10556))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: _id10557)))))))))))))))))))))))))))) (IDSigExp: (SigId: Option-sig))))))))))