hamlet/SCon-struct.ss
(module SCon-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: SCon-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: TyName-type) (CONTy: (Tyseq:) (LongTyCon: TyName.TyName-type)))))
          (SEQStrDec:
           (DECStrDec: (DATATYPEDec: (DatBind: (TyVarseq:) (TyCon: base-type) (ConBind: (VId: DEC) (ConBind: (VId: HEX))))))
           (SEQStrDec:
            (DECStrDec:
             (DATATYPEDec:
              (DatBind:
               (TyVarseq:)
               (TyCon: SCon-type)
               (ConBind:
                (VId: INT)
                (RECORDTy:
                 (TyRow:
                  (Lab: |1|)
                  (CONTy: (Tyseq:) (LongTyCon: base-type))
                  (TyRow:
                   (Lab: |2|)
                   (CONTy: (Tyseq:) (LongTyCon: string-type))
                   (TyRow:
                    (Lab: |3|)
                    (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type))))))
                (ConBind:
                 (VId: WORD)
                 (RECORDTy:
                  (TyRow:
                   (Lab: |1|)
                   (CONTy: (Tyseq:) (LongTyCon: base-type))
                   (TyRow:
                    (Lab: |2|)
                    (CONTy: (Tyseq:) (LongTyCon: string-type))
                    (TyRow:
                     (Lab: |3|)
                     (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type))))))
                 (ConBind:
                  (VId: STRING)
                  (RECORDTy:
                   (TyRow:
                    (Lab: |1|)
                    (CONTy: (Tyseq:) (LongTyCon: string-type))
                    (TyRow:
                     (Lab: |2|)
                     (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type)))))
                  (ConBind:
                   (VId: CHAR)
                   (RECORDTy:
                    (TyRow:
                     (Lab: |1|)
                     (CONTy: (Tyseq:) (LongTyCon: string-type))
                     (TyRow:
                      (Lab: |2|)
                      (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type)))))
                   (ConBind:
                    (VId: REAL)
                    (RECORDTy:
                     (TyRow:
                      (Lab: |1|)
                      (CONTy: (Tyseq:) (LongTyCon: string-type))
                      (TyRow:
                       (Lab: |2|)
                       (CONTy:
                        (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type)))
                        (LongTyCon: ref-type)))))))))))))
            (SEQStrDec:
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: toString)))
                 (FNExp:
                  (Match:
                   (Mrule:
                    (ATPat:
                     (PARAtPat:
                      (ATPat:
                       (PARAtPat:
                        (ATPat:
                         (PARAtPat:
                          (CONPat:
                           (LongVId: INT)
                           (RECORDAtPat:
                            (FIELDPatRow:
                             (Lab: |1|)
                             (ATPat: (IDAtPat: (LongVId: base)))
                             (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                    (IFExp:
                     (ATExp:
                      (PARAtExp:
                       (APPExp:
                        (ATExp: (IDAtExp: (LongVId: =)))
                        (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: base))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: DEC)))))))))
                     (ATExp: (IDAtExp: (LongVId: s)))
                     (ATExp:
                      (PARAtExp:
                       (APPExp:
                        (ATExp: (IDAtExp: (LongVId: ^)))
                        (RECORDAtExp:
                         (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: "0x"))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: s)))))))))))
                   (Match:
                    (Mrule:
                     (ATPat:
                      (PARAtPat:
                       (ATPat:
                        (PARAtPat:
                         (ATPat:
                          (PARAtPat:
                           (CONPat:
                            (LongVId: WORD)
                            (RECORDAtPat:
                             (FIELDPatRow:
                              (Lab: |1|)
                              (ATPat: (IDAtPat: (LongVId: base)))
                              (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |3|) (ATPat: (WILDCARDAtPat:)))))))))))))
                     (ATExp:
                      (PARAtExp:
                       (APPExp:
                        (ATExp: (IDAtExp: (LongVId: ^)))
                        (RECORDAtExp:
                         (ExpRow:
                          (Lab: |1|)
                          (ATExp:
                           (PARAtExp:
                            (IFExp:
                             (ATExp:
                              (PARAtExp:
                               (APPExp:
                                (ATExp: (IDAtExp: (LongVId: =)))
                                (RECORDAtExp:
                                 (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: base))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: DEC)))))))))
                             (ATExp: (SCONAtExp: (STRINGSCon: "0w")))
                             (ATExp: (SCONAtExp: (STRINGSCon: "0wx"))))))
                          (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: s))))))))))
                    (Match:
                     (Mrule:
                      (ATPat:
                       (PARAtPat:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (PARAtPat:
                            (CONPat:
                             (LongVId: STRING)
                             (RECORDAtPat:
                              (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                      (ATExp:
                       (PARAtExp:
                        (APPExp:
                         (ATExp: (IDAtExp: (LongVId: ^)))
                         (RECORDAtExp:
                          (ExpRow:
                           (Lab: |1|)
                           (ATExp:
                            (PARAtExp:
                             (APPExp:
                              (ATExp: (IDAtExp: (LongVId: ^)))
                              (RECORDAtExp:
                               (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: "\""))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: s)))))))))
                           (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "\""))))))))))
                     (Match:
                      (Mrule:
                       (ATPat:
                        (PARAtPat:
                         (ATPat:
                          (PARAtPat:
                           (ATPat:
                            (PARAtPat:
                             (CONPat:
                              (LongVId: CHAR)
                              (RECORDAtPat:
                               (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                       (ATExp:
                        (PARAtExp:
                         (APPExp:
                          (ATExp: (IDAtExp: (LongVId: ^)))
                          (RECORDAtExp:
                           (ExpRow:
                            (Lab: |1|)
                            (ATExp:
                             (PARAtExp:
                              (APPExp:
                               (ATExp: (IDAtExp: (LongVId: ^)))
                               (RECORDAtExp:
                                (ExpRow: (Lab: |1|) (ATExp: (SCONAtExp: (STRINGSCon: "#\""))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: s)))))))))
                            (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (STRINGSCon: "\""))))))))))
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (PARAtPat:
                            (ATPat:
                             (PARAtPat:
                              (CONPat:
                               (LongVId: REAL)
                               (RECORDAtPat:
                                (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:))))))))))))
                        (ATExp: (IDAtExp: (LongVId: s))))))))))))))
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: tyname)))
                 (FNExp:
                  (Match:
                   (Mrule:
                    (ATPat:
                     (PARAtPat:
                      (ATPat:
                       (PARAtPat:
                        (ATPat:
                         (PARAtPat:
                          (CONPat:
                           (LongVId: INT)
                           (RECORDAtPat:
                            (FIELDPatRow:
                             (Lab: |1|)
                             (ATPat: (WILDCARDAtPat:))
                             (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: r))))))))))))))
                    (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r))))))
                   (Match:
                    (Mrule:
                     (ATPat:
                      (PARAtPat:
                       (ATPat:
                        (PARAtPat:
                         (ATPat:
                          (PARAtPat:
                           (CONPat:
                            (LongVId: WORD)
                            (RECORDAtPat:
                             (FIELDPatRow:
                              (Lab: |1|)
                              (ATPat: (WILDCARDAtPat:))
                              (FIELDPatRow: (Lab: |2|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |3|) (ATPat: (IDAtPat: (LongVId: r))))))))))))))
                     (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r))))))
                    (Match:
                     (Mrule:
                      (ATPat:
                       (PARAtPat:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (PARAtPat:
                            (CONPat:
                             (LongVId: STRING)
                             (RECORDAtPat:
                              (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r)))))))))))))
                      (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r))))))
                     (Match:
                      (Mrule:
                       (ATPat:
                        (PARAtPat:
                         (ATPat:
                          (PARAtPat:
                           (ATPat:
                            (PARAtPat:
                             (CONPat:
                              (LongVId: CHAR)
                              (RECORDAtPat:
                               (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r)))))))))))))
                       (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r))))))
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (PARAtPat:
                            (ATPat:
                             (PARAtPat:
                              (CONPat:
                               (LongVId: REAL)
                               (RECORDAtPat:
                                (FIELDPatRow: (Lab: |1|) (ATPat: (WILDCARDAtPat:)) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: r)))))))))))))
                        (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r)))))))))))))))))))))
        (IDSigExp: (SigId: SCON-sig)))))))))