hamlet/Lab-struct.ss
(module Lab-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: Lab-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Lab-type) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
          (SEQStrDec:
           (DECStrDec:
            (VALDec:
             (TyVarseq:)
             (RECValBind:
              (PLAINValBind:
               (ATPat: (IDAtPat: (LongVId: fromString)))
               (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (IDAtExp: (LongVId: s))))))))))
           (SEQStrDec:
            (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: fromInt))) (ATExp: (IDAtExp: (LongVId: Int.toString))))))
            (SEQStrDec:
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: toString)))
                 (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (IDAtExp: (LongVId: s))))))))))
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: compare)))
                 (FNExp:
                  (Match:
                   (Mrule:
                    (ATPat:
                     (PARAtPat:
                      (ATPat:
                       (RECORDAtPat:
                        (FIELDPatRow: (Lab: |1|) (ATPat: (IDAtPat: (LongVId: lab1))) (FIELDPatRow: (Lab: |2|) (ATPat: (IDAtPat: (LongVId: lab2)))))))))
                    (HANDLEExp:
                     (ATExp:
                      (PARAtExp:
                       (APPExp:
                        (ATExp:
                         (PARAtExp:
                          (FNExp:
                           (Match:
                            (Mrule:
                             (ATPat:
                              (RECORDAtPat:
                               (FIELDPatRow:
                                (Lab: |1|)
                                (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: i1)))))
                                (FIELDPatRow: (Lab: |2|) (ATPat: (PARAtPat: (CONPat: (LongVId: SOME) (IDAtPat: (LongVId: i2)))))))))
                             (ATExp:
                              (PARAtExp:
                               (APPExp:
                                (ATExp: (IDAtExp: (LongVId: Int.compare)))
                                (RECORDAtExp:
                                 (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: i1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: i2))))))))))
                            (Match:
                             (Mrule:
                              (ATPat: (WILDCARDAtPat:))
                              (ATExp:
                               (PARAtExp:
                                (APPExp:
                                 (ATExp: (IDAtExp: (LongVId: String.compare)))
                                 (RECORDAtExp:
                                  (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: lab1))) (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab2)))))))))))))))
                        (PARAtExp:
                         (ATExp:
                          (RECORDAtExp:
                           (ExpRow:
                            (Lab: |1|)
                            (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Int.fromString))) (IDAtExp: (LongVId: lab1)))))
                            (ExpRow:
                             (Lab: |2|)
                             (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Int.fromString))) (IDAtExp: (LongVId: lab2)))))))))))))
                     (Match:
                      (Mrule:
                       (ATPat: (IDAtPat: (LongVId: Overflow)))
                       (ATExp:
                        (PARAtExp:
                         (APPExp:
                          (ATExp: (IDAtExp: (LongVId: String.compare)))
                          (RECORDAtExp:
                           (ExpRow:
                            (Lab: |1|)
                            (ATExp: (IDAtExp: (LongVId: lab1)))
                            (ExpRow: (Lab: |2|) (ATExp: (IDAtExp: (LongVId: lab2))))))))))))))))))))))))
        (IDSigExp: (SigId: LAB-sig)))))))))