hamlet/IdFn-functor.ss
(module IdFn-functor (planet chongkai/sml)
  (#%module-begin
   (Program:
    (FUNDECTopDec:
     (FunDec:
      (FunBind:
       (FunId: IdFn-functor)
       (StrId: _id21-struct)
       (SIGSigExp: (EMPTYSpec:))
       (LETStrExp:
        (DECStrDec: (OPENDec: (LongStrId: _id21-struct)))
        (COLONStrExp:
         (STRUCTStrExp:
          (SEQStrDec:
           (DECStrDec: (TYPEDec: (TypBind: (TyVarseq:) (TyCon: Id-type) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
           (SEQStrDec:
            (DECStrDec:
             (VALDec:
              (TyVarseq:)
              (RECValBind:
               (PLAINValBind:
                (ATPat: (IDAtPat: (LongVId: invent)))
                (FNExp:
                 (Match:
                  (Mrule:
                   (ATPat: (PARAtPat: (ATPat: (RECORDAtPat:))))
                   (ATExp:
                    (PARAtExp:
                     (APPExp:
                      (ATExp: (IDAtExp: (LongVId: ^)))
                      (RECORDAtExp:
                       (ExpRow:
                        (Lab: |1|)
                        (ATExp: (SCONAtExp: (STRINGSCon: "_id")))
                        (ExpRow:
                         (Lab: |2|)
                         (ATExp:
                          (PARAtExp:
                           (APPExp:
                            (ATExp: (IDAtExp: (LongVId: Stamp.toString)))
                            (PARAtExp: (ATExp: (PARAtExp: (APPExp: (ATExp: (IDAtExp: (LongVId: Stamp.stamp))) (RECORDAtExp:)))))))))))))))))))))
            (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:)
                (RECValBind:
                 (PLAINValBind:
                  (ATPat: (IDAtPat: (LongVId: toString)))
                  (FNExp: (Match: (Mrule: (ATPat: (PARAtPat: (ATPat: (IDAtPat: (LongVId: s))))) (ATExp: (IDAtExp: (LongVId: s))))))))))
              (DECStrDec: (VALDec: (TyVarseq:) (PLAINValBind: (ATPat: (IDAtPat: (LongVId: compare))) (ATExp: (IDAtExp: (LongVId: String.compare)))))))))))
         (IDSigExp: (SigId: ID-sig))))))))))