lib/General-struct.ss
(module General-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: GENERAL-sig)
       (SIGSigExp:
        (SEQSpec:
         (EXCEPTIONSpec: (ExDesc: (VId: Bind)))
         (SEQSpec:
          (EXCEPTIONSpec: (ExDesc: (VId: Chr)))
          (SEQSpec:
           (EXCEPTIONSpec: (ExDesc: (VId: Div)))
           (SEQSpec:
            (EXCEPTIONSpec: (ExDesc: (VId: Domain)))
            (SEQSpec:
             (EXCEPTIONSpec: (ExDesc: (VId: Fail) (CONTy: (Tyseq:) (LongTyCon: string-type))))
             (SEQSpec:
              (EXCEPTIONSpec: (ExDesc: (VId: Match)))
              (SEQSpec:
               (EXCEPTIONSpec: (ExDesc: (VId: Overflow)))
               (SEQSpec:
                (EXCEPTIONSpec: (ExDesc: (VId: Size)))
                (SEQSpec:
                 (EXCEPTIONSpec: (ExDesc: (VId: Span)))
                 (SEQSpec:
                  (EXCEPTIONSpec: (ExDesc: (VId: Subscript)))
                  (SEQSpec:
                   (VALSpec: (ValDesc: (VId: exnName) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: exn-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
                   (SEQSpec:
                    (VALSpec: (ValDesc: (VId: exnMessage) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: exn-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
                    (SEQSpec:
                     (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: order-type) (ConDesc: (VId: LESS) (ConDesc: (VId: EQUAL) (ConDesc: (VId: GREATER))))))
                     (SEQSpec:
                      (VALSpec: (ValDesc: (VId: !) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: ref-type)) (VARTy: (TyVar: |'a|)))))
                      (SEQSpec:
                       (VALSpec:
                        (ValDesc:
                         (VId: :=)
                         (ARROWTy:
                          (PARTy:
                           (RECORDTy:
                            (TyRow: (Lab: |1|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: ref-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|))))))
                          (CONTy: (Tyseq:) (LongTyCon: unit-type)))))
                       (SEQSpec:
                        (VALSpec:
                         (ValDesc:
                          (VId: o)
                          (ARROWTy:
                           (PARTy:
                            (RECORDTy:
                             (TyRow:
                              (Lab: |1|)
                              (PARTy: (ARROWTy: (VARTy: (TyVar: |'b|)) (VARTy: (TyVar: |'c|))))
                              (TyRow: (Lab: |2|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'b|))))))))
                           (ARROWTy: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'c|))))))
                        (SEQSpec:
                         (VALSpec:
                          (ValDesc:
                           (VId: before)
                           (ARROWTy:
                            (PARTy: (RECORDTy: (TyRow: (Lab: |1|) (VARTy: (TyVar: |'a|)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: unit-type))))))
                            (VARTy: (TyVar: |'a|)))))
                         (VALSpec: (ValDesc: (VId: ignore) (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: unit-type)))))))))))))))))))))))))
     (STRDECTopDec:
      (STRUCTUREStrDec:
       (StrBind:
        (StrId: General-struct)
        (SEALStrExp:
         (STRUCTStrExp:
          (SEQStrDec:
           (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Bind) (LongVId: Bind))))
           (SEQStrDec:
            (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Chr) (LongVId: Chr))))
            (SEQStrDec:
             (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Div) (LongVId: Div))))
             (SEQStrDec:
              (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Domain) (LongVId: Domain))))
              (SEQStrDec:
               (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Fail) (LongVId: Fail))))
               (SEQStrDec:
                (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Match) (LongVId: Match))))
                (SEQStrDec:
                 (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Overflow) (LongVId: Overflow))))
                 (SEQStrDec:
                  (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Size) (LongVId: Size))))
                  (SEQStrDec:
                   (DECStrDec: (EXCEPTIONDec: (NEWExBind: (VId: Span))))
                   (SEQStrDec:
                    (DECStrDec: (EXCEPTIONDec: (EQUALExBind: (VId: Subscript) (LongVId: Subscript))))
                    (SEQStrDec:
                     (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exnName))) (ATExp: (IDAtExp: (LongVId: exnName))))))
                     (SEQStrDec:
                      (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: exnMessage))) (ATExp: (IDAtExp: (LongVId: exnMessage))))))
                      (SEQStrDec:
                       (DECStrDec: (DATATYPE2Dec: (TyCon: order-type) (LongTyCon: order-type)))
                       (SEQStrDec:
                        (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: !))) (ATExp: (IDAtExp: (LongVId: !))))))
                        (SEQStrDec:
                         (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: :=))) (ATExp: (IDAtExp: (LongVId: :=))))))
                         (SEQStrDec:
                          (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: o))) (ATExp: (IDAtExp: (LongVId: o))))))
                          (SEQStrDec:
                           (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: before))) (ATExp: (IDAtExp: (LongVId: before))))))
                           (DECStrDec:
                            (VALDec:
                             (TyVarseq:)
                             (PLAINValBind: (ATPat: (IDAtPat: (LongVId: ignore))) (ATExp: (IDAtExp: (LongVId: ignore))))))))))))))))))))))))
         (IDSigExp: (SigId: GENERAL-sig))))))))))