hamlet/Stamp-struct.ss
(module Stamp-struct (planet chongkai/sml)
  (#%module-begin
   (Program:
    (STRDECTopDec:
     (STRUCTUREStrDec:
      (StrBind:
       (StrId: Stamp-struct)
       (SEALStrExp:
        (STRUCTStrExp:
         (SEQStrDec:
          (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: stamp-type) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
          (SEQStrDec:
           (DECStrDec:
            (VALDec:
             (TyVarseq:)
             (PLAINValBind: (ATPat: (IDAtPat: (LongVId: r))) (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: ref))) (SCONAtExp: (INTSCon: 0))))))))
           (SEQStrDec:
            (DECStrDec:
             (VALDec:
              (TyVarseq:)
              (RECValBind:
               (PLAINValBind:
                (ATPat: (IDAtPat: (LongVId: reset)))
                (FNExp:
                 (Match:
                  (Mrule:
                   (ATPat: (PARAtPat: (ATPat: (RECORDAtPat:))))
                   (ATExp:
                    (PARAtExp:
                     (APPExp:
                      (ATExp: (IDAtExp: (LongVId: :=)))
                      (RECORDAtExp: (ExpRow: (Lab: |1|) (ATExp: (IDAtExp: (LongVId: r))) (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 0))))))))))))))))
            (SEQStrDec:
             (DECStrDec:
              (VALDec:
               (TyVarseq:)
               (RECValBind:
                (PLAINValBind:
                 (ATPat: (IDAtPat: (LongVId: stamp)))
                 (FNExp:
                  (Match:
                   (Mrule:
                    (ATPat: (PARAtPat: (ATPat: (RECORDAtPat:))))
                    (ATExp:
                     (SEQAtExp:
                      (ATExp:
                       (PARAtExp:
                        (APPExp:
                         (ATExp: (IDAtExp: (LongVId: :=)))
                         (RECORDAtExp:
                          (ExpRow:
                           (Lab: |1|)
                           (ATExp: (IDAtExp: (LongVId: r)))
                           (ExpRow:
                            (Lab: |2|)
                            (ATExp:
                             (PARAtExp:
                              (APPExp:
                               (ATExp: (IDAtExp: (LongVId: +)))
                               (RECORDAtExp:
                                (ExpRow:
                                 (Lab: |1|)
                                 (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r)))))
                                 (ExpRow: (Lab: |2|) (ATExp: (SCONAtExp: (INTSCon: 1)))))))))))))))
                      (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: !))) (IDAtExp: (LongVId: r)))))))))))))))
             (SEQStrDec:
              (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: toString))) (ATExp: (IDAtExp: (LongVId: Int.toString))))))
              (SEQStrDec:
               (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: compare))) (ATExp: (IDAtExp: (LongVId: Int.compare))))))
               (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: min))) (ATExp: (IDAtExp: (LongVId: Int.min)))))))))))))
        (IDSigExp: (SigId: STAMP-sig)))))))))