hamlet/TyVar-struct.ss
(module TyVar-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: TyVar-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: OverloadingClass-type) (CONTy: (Tyseq:) (LongTyCon: OverloadingClass.OverloadingClass-type)))))
          (SEQStrDec:
           (DECStrDec:
            (TYPEDec:
             (TypBind:
              (TyVarseq:)
              (TyCon: TyVar-type)
              (RECORDTy:
               (TyRow:
                (Lab: name)
                (CONTy: (Tyseq:) (LongTyCon: string-type))
                (TyRow:
                 (Lab: equality)
                 (CONTy: (Tyseq:) (LongTyCon: bool-type))
                 (TyRow:
                  (Lab: overloading)
                  (CONTy:
                   (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: OverloadingClass-type))) (LongTyCon: ref-type)))
                   (LongTyCon: option-type)))))))))
           (SEQStrDec:
            (DECStrDec:
             (VALDec:
              (TyVarseq:)
              (RECValBind:
               (PLAINValBind:
                (ATPat: (IDAtPat: (LongVId: invent)))
                (FNExp:
                 (Match:
                  (Mrule:
                   (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: equality)))))
                   (ATExp:
                    (RECORDAtExp:
                     (ExpRow:
                      (Lab: name)
                      (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:
                                  (PARAtExp:
                                   (IFExp:
                                    (ATExp: (IDAtExp: (LongVId: equality)))
                                    (ATExp: (SCONAtExp: (STRINGSCon: "''")))
                                    (ATExp: (SCONAtExp: (STRINGSCon: "'"))))))))))))
                           (ExpRow:
                            (Lab: |2|)
                            (ATExp:
                             (PARAtExp:
                              (APPExp:
                               (ATExp: (IDAtExp: (LongVId: Stamp.toString)))
                               (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Stamp.stamp))) (RECORDAtExp:))))))))))))))
                      (ExpRow:
                       (Lab: equality)
                       (ATExp: (IDAtExp: (LongVId: equality)))
                       (ExpRow: (Lab: overloading) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))))
            (SEQStrDec:
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: fromInt)))
                 (FNExp:
                  (Match:
                   (Mrule:
                    (ATPat: (IDAtPat: (LongVId: equality)))
                    (FNExp:
                     (Match:
                      (Mrule:
                       (ATPat: (IDAtPat: (LongVId: n)))
                       (ATExp:
                        (LETAtExp:
                         (SEQDec:
                          (VALDec:
                           (TyVarseq:)
                           (PLAINValBind:
                            (ATPat: (IDAtPat: (LongVId: c)))
                            (ATExp:
                             (PARAtExp:
                              (APPExp:
                               (ATExp: (IDAtExp: (LongVId: String.str)))
                               (PARAtExp:
                                (ATExp:
                                 (PARAtExp:
                                  (APPExp:
                                   (ATExp: (IDAtExp: (LongVId: Char.chr)))
                                   (PARAtExp:
                                    (ATExp:
                                     (PARAtExp:
                                      (APPExp:
                                       (ATExp: (IDAtExp: (LongVId: +)))
                                       (RECORDAtExp:
                                        (ExpRow:
                                         (Lab: |1|)
                                         (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Char.ord))) (SCONAtExp: (CHARSCon: #\a)))))
                                         (ExpRow:
                                          (Lab: |2|)
                                          (ATExp:
                                           (PARAtExp:
                                            (APPExp:
                                             (ATExp: (IDAtExp: (LongVId: mod)))
                                             (RECORDAtExp:
                                              (ExpRow:
                                               (Lab: |1|)
                                               (ATExp: (IDAtExp: (LongVId: n)))
                                               (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 26)))))))))))))))))))))))))
                          (SEQDec:
                           (VALDec:
                            (TyVarseq:)
                            (PLAINValBind:
                             (ATPat: (IDAtPat: (LongVId: i)))
                             (ATExp:
                              (PARAtExp:
                               (APPExp:
                                (ATExp: (IDAtExp: (LongVId: div)))
                                (RECORDAtExp:
                                 (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: n))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 26)))))))))))
                           (VALDec:
                            (TyVarseq:)
                            (PLAINValBind:
                             (ATPat: (IDAtPat: (LongVId: name)))
                             (ATExp:
                              (PARAtExp:
                               (APPExp:
                                (ATExp: (IDAtExp: (LongVId: ^)))
                                (RECORDAtExp:
                                 (ExpRow:
                                  (Lab: |1|)
                                  (ATExp:
                                   (PARAtExp:
                                    (IFExp:
                                     (ATExp: (IDAtExp: (LongVId: equality)))
                                     (ATExp: (SCONAtExp: (STRINGSCon: "''")))
                                     (ATExp: (SCONAtExp: (STRINGSCon: "'"))))))
                                  (ExpRow:
                                   (Lab: |2|)
                                   (ATExp:
                                    (PARAtExp:
                                     (IFExp:
                                      (ATExp:
                                       (PARAtExp:
                                        (APPExp:
                                         (ATExp: (IDAtExp: (LongVId: =)))
                                         (RECORDAtExp:
                                          (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0)))))))))
                                      (ATExp: (IDAtExp: (LongVId: c)))
                                      (ATExp:
                                       (PARAtExp:
                                        (APPExp:
                                         (ATExp: (IDAtExp: (LongVId: ^)))
                                         (RECORDAtExp:
                                          (ExpRow:
                                           (Lab: |1|)
                                           (ATExp: (IDAtExp: (LongVId: c)))
                                           (ExpRow:
                                            (Lab: |2|)
                                            (ATExp:
                                             (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Int.toString))) (IDAtExp: (LongVId: i))))))))))))))))))))))))
                         (ATExp:
                          (RECORDAtExp:
                           (ExpRow:
                            (Lab: name)
                            (ATExp: (IDAtExp: (LongVId: name)))
                            (ExpRow:
                             (Lab: equality)
                             (ATExp: (IDAtExp: (LongVId: equality)))
                             (ExpRow: (Lab: overloading) (ATExp: (IDAtExp: (LongVId: NONE))))))))))))))))))))
             (SEQStrDec:
              (DECStrDec:
               (VALDec:
                (TyVarseq:)
                (RECValBind:
                 (PLAINValBind:
                  (ATPat: (IDAtPat: (LongVId: fromString)))
                  (FNExp:
                   (Match:
                    (Mrule:
                     (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s)))))
                     (ATExp:
                      (RECORDAtExp:
                       (ExpRow:
                        (Lab: name)
                        (ATExp: (IDAtExp: (LongVId: s)))
                        (ExpRow:
                         (Lab: equality)
                         (IFExp:
                          (ATExp:
                           (PARAtExp:
                            (APPExp:
                             (ATExp: (IDAtExp: (LongVId: >)))
                             (RECORDAtExp:
                              (ExpRow:
                               (Lab: |1|)
                               (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: String.size))) (PARAtExp: (ATExp: (IDAtExp: (LongVId: s)))))))
                               (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))
                          (ATExp:
                           (PARAtExp:
                            (APPExp:
                             (ATExp: (IDAtExp: (LongVId: =)))
                             (RECORDAtExp:
                              (ExpRow:
                               (Lab: |1|)
                               (ATExp:
                                (PARAtExp:
                                 (APPExp:
                                  (ATExp: (IDAtExp: (LongVId: String.sub)))
                                  (RECORDAtExp:
                                   (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: s))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))
                               (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (CHARSCon: #\')))))))))
                          (ATExp: (IDAtExp: (LongVId: false))))
                         (ExpRow: (Lab: overloading) (ATExp: (IDAtExp: (LongVId: NONE)))))))))))))))
              (SEQStrDec:
               (DECStrDec:
                (VALDec:
                 (TyVarseq:)
                 (RECValBind:
                  (PLAINValBind:
                   (ATPat: (IDAtPat: (LongVId: fromOverloadingClass)))
                   (FNExp:
                    (Match:
                     (Mrule:
                      (ATPat:
                       (PARAtPat:
                        (ATPat:
                         (RECORDAtPat:
                          (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: s))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: O)))))))))
                      (ATExp:
                       (RECORDAtExp:
                        (ExpRow:
                         (Lab: name)
                         (ATExp: (IDAtExp: (LongVId: s)))
                         (ExpRow:
                          (Lab: equality)
                          (ATExp: (IDAtExp: (LongVId: false)))
                          (ExpRow:
                           (Lab: overloading)
                           (ATExp:
                            (PARAtExp:
                             (APPExp:
                              (ATExp: (IDAtExp: (LongVId: SOME)))
                              (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ref))) (IDAtExp: (LongVId: O)))))))))))))))))))))
               (SEQStrDec:
                (DECStrDec:
                 (VALDec:
                  (TyVarseq:)
                  (RECValBind:
                   (PLAINValBind:
                    (ATPat: (IDAtPat: (LongVId: toString)))
                    (FNExp:
                     (Match:
                      (Mrule:
                       (ATPat:
                        (PARAtPat:
                         (ATPat:
                          (RECORDAtPat:
                           (FIELDPatRow:
                            (Lab: name)
                            (ATPat: (IDAtPat: (LongVId: name)))
                            (FIELDPatRow:
                             (Lab: equality)
                             (ATPat: (IDAtPat: (LongVId: equality)))
                             (FIELDPatRow: (Lab: overloading) (ATPat: (IDAtPat: (LongVId: overloading))))))))))
                       (ATExp: (IDAtExp: (LongVId: name))))))))))
                (SEQStrDec:
                 (DECStrDec:
                  (VALDec:
                   (TyVarseq:)
                   (RECValBind:
                    (PLAINValBind:
                     (ATPat: (IDAtPat: (LongVId: admitsEquality)))
                     (FNExp:
                      (Match:
                       (Mrule:
                        (ATPat:
                         (PARAtPat:
                          (ATPat:
                           (RECORDAtPat:
                            (FIELDPatRow:
                             (Lab: name)
                             (ATPat: (IDAtPat: (LongVId: name)))
                             (FIELDPatRow:
                              (Lab: equality)
                              (ATPat: (IDAtPat: (LongVId: equality)))
                              (FIELDPatRow: (Lab: overloading) (ATPat: (IDAtPat: (LongVId: overloading))))))))))
                        (ATExp: (IDAtExp: (LongVId: equality))))))))))
                 (SEQStrDec:
                  (DECStrDec:
                   (VALDec:
                    (TyVarseq:)
                    (RECValBind:
                     (PLAINValBind:
                      (ATPat: (IDAtPat: (LongVId: overloadingClass)))
                      (FNExp:
                       (Match:
                        (Mrule:
                         (ATPat:
                          (PARAtPat:
                           (ATPat:
                            (RECORDAtPat:
                             (FIELDPatRow:
                              (Lab: name)
                              (ATPat: (IDAtPat: (LongVId: name)))
                              (FIELDPatRow:
                               (Lab: equality)
                               (ATPat: (IDAtPat: (LongVId: equality)))
                               (FIELDPatRow: (Lab: overloading) (ATPat: (IDAtPat: (LongVId: overloading))))))))))
                         (ATExp:
                          (PARAtExp:
                           (APPExp:
                            (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Option.map))) (IDAtExp: (LongVId: !)))))
                            (IDAtExp: (LongVId: overloading))))))))))))
                  (DECStrDec:
                   (VALDec:
                    (TyVarseq:)
                    (RECValBind:
                     (PLAINValBind:
                      (ATPat: (IDAtPat: (LongVId: compare)))
                      (FNExp:
                       (Match:
                        (Mrule:
                         (ATPat:
                          (PARAtPat:
                           (ATPat:
                            (RECORDAtPat:
                             (FIELDPatRow:
                              (Lab: |1|)
                              (COLONPat: (ATPat: (IDAtPat: (LongVId: alpha1))) (CONTy: (Tyseq:) (LongTyCon: TyVar-type)))
                              (FIELDPatRow: (Lab: |2|) (COLONPat: (ATPat: (IDAtPat: (LongVId: alpha2))) (CONTy: (Tyseq:) (LongTyCon: TyVar-type)))))))))
                         (ATExp:
                          (PARAtExp:
                           (APPExp:
                            (ATExp: (IDAtExp: (LongVId: String.compare)))
                            (RECORDAtExp:
                             (ExpRow:
                              (Lab: |1|)
                              (ATExp:
                               (PARAtExp:
                                (APPExp:
                                 (ATExp:
                                  (PARAtExp:
                                   (FNExp:
                                    (Match:
                                     (Mrule:
                                      (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: name) (ATPat: (IDAtPat: (LongVId: _id109))) (DOTSPatRow:))))
                                      (ATExp: (IDAtExp: (LongVId: _id109))))))))
                                 (IDAtExp: (LongVId: alpha1)))))
                              (ExpRow:
                               (Lab: |2|)
                               (ATExp:
                                (PARAtExp:
                                 (APPExp:
                                  (ATExp:
                                   (PARAtExp:
                                    (FNExp:
                                     (Match:
                                      (Mrule:
                                       (ATPat: (RECORDAtPat: (FIELDPatRow: (Lab: name) (ATPat: (IDAtPat: (LongVId: _id110))) (DOTSPatRow:))))
                                       (ATExp: (IDAtExp: (LongVId: _id110))))))))
                                  (IDAtExp: (LongVId: alpha2))))))))))))))))))))))))))))
        (IDSigExp: (SigId: TYVAR-sig)))))))))