hamlet/LONGID-sig.ss
(module LONGID-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: LONGID-sig)
       (SIGSigExp:
        (SEQSpec:
         (STRUCTURESpec: (StrDesc: (StrId: Id-struct) (IDSigExp: (SigId: ID-sig))))
         (SEQSpec:
          (STRUCTURESpec: (StrDesc: (StrId: StrId-struct) (IDSigExp: (SigId: ID-sig))))
          (SEQSpec:
           (SEQSpec:
            (INCLUDESpec:
             (WHERETYPESigExp:
              (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: Id-type))))
              (TyVarseq:)
              (LongTyCon: Id-type)
              (CONTy: (Tyseq:) (LongTyCon: Id.Id-type))))
            (EMPTYSpec:))
           (SEQSpec:
            (SEQSpec:
             (INCLUDESpec:
              (WHERETYPESigExp:
               (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: StrId-type))))
               (TyVarseq:)
               (LongTyCon: StrId-type)
               (CONTy: (Tyseq:) (LongTyCon: StrId.Id-type))))
             (EMPTYSpec:))
            (SEQSpec:
             (EQTYPESpec: (TypDec: (TyVarseq:) (TyCon: longId-type)))
             (SEQSpec:
              (VALSpec: (ValDesc: (VId: invent) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: unit-type)) (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
              (SEQSpec:
               (VALSpec: (ValDesc: (VId: fromId) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: Id-type)) (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
               (SEQSpec:
                (VALSpec: (ValDesc: (VId: toId) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: longId-type)) (CONTy: (Tyseq:) (LongTyCon: Id-type)))))
                (SEQSpec:
                 (VALSpec: (ValDesc: (VId: toString) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: longId-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
                 (SEQSpec:
                  (VALSpec:
                   (ValDesc:
                    (VId: strengthen)
                    (ARROWTy:
                     (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: StrId-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
                     (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
                  (SEQSpec:
                   (VALSpec:
                    (ValDesc:
                     (VId: implode)
                     (ARROWTy:
                      (RECORDTy:
                       (TyRow:
                        (Lab: |1|)
                        (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: StrId-type))) (LongTyCon: list-type))
                        (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Id-type)))))
                      (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
                   (SEQSpec:
                    (VALSpec:
                     (ValDesc:
                      (VId: explode)
                      (ARROWTy:
                       (CONTy: (Tyseq:) (LongTyCon: longId-type))
                       (RECORDTy:
                        (TyRow:
                         (Lab: |1|)
                         (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: StrId-type))) (LongTyCon: list-type))
                         (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: Id-type))))))))
                    (SEQSpec:
                     (VALSpec:
                      (ValDesc: (VId: isUnqualified) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: longId-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
                     (VALSpec:
                      (ValDesc:
                       (VId: compare)
                       (ARROWTy:
                        (RECORDTy:
                         (TyRow: (Lab: |1|) (CONTy: (Tyseq:) (LongTyCon: longId-type)) (TyRow: (Lab: |2|) (CONTy: (Tyseq:) (LongTyCon: longId-type)))))
                        (CONTy: (Tyseq:) (LongTyCon: order-type)))))))))))))))))))))))))