hamlet/SCON-sig.ss
(module SCON-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: SCON-sig)
       (SIGSigExp:
        (SEQSpec:
         (SEQSpec:
          (INCLUDESpec:
           (WHERETYPESigExp:
            (SIGSigExp: (TYPESpec: (TypDec: (TyVarseq:) (TyCon: TyName-type))))
            (TyVarseq:)
            (LongTyCon: TyName-type)
            (CONTy: (Tyseq:) (LongTyCon: TyName.TyName-type))))
          (EMPTYSpec:))
         (SEQSpec:
          (DATATYPESpec: (DatDesc: (TyVarseq:) (TyCon: base-type) (ConDesc: (VId: DEC) (ConDesc: (VId: HEX)))))
          (SEQSpec:
           (DATATYPESpec:
            (DatDesc:
             (TyVarseq:)
             (TyCon: SCon-type)
             (ConDesc:
              (VId: INT)
              (RECORDTy:
               (TyRow:
                (Lab: |1|)
                (CONTy: (Tyseq:) (LongTyCon: base-type))
                (TyRow:
                 (Lab: |2|)
                 (CONTy: (Tyseq:) (LongTyCon: string-type))
                 (TyRow:
                  (Lab: |3|)
                  (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type))))))
              (ConDesc:
               (VId: WORD)
               (RECORDTy:
                (TyRow:
                 (Lab: |1|)
                 (CONTy: (Tyseq:) (LongTyCon: base-type))
                 (TyRow:
                  (Lab: |2|)
                  (CONTy: (Tyseq:) (LongTyCon: string-type))
                  (TyRow:
                   (Lab: |3|)
                   (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type))))))
               (ConDesc:
                (VId: STRING)
                (RECORDTy:
                 (TyRow:
                  (Lab: |1|)
                  (CONTy: (Tyseq:) (LongTyCon: string-type))
                  (TyRow:
                   (Lab: |2|)
                   (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type)))))
                (ConDesc:
                 (VId: CHAR)
                 (RECORDTy:
                  (TyRow:
                   (Lab: |1|)
                   (CONTy: (Tyseq:) (LongTyCon: string-type))
                   (TyRow:
                    (Lab: |2|)
                    (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type)))))
                 (ConDesc:
                  (VId: REAL)
                  (RECORDTy:
                   (TyRow:
                    (Lab: |1|)
                    (CONTy: (Tyseq:) (LongTyCon: string-type))
                    (TyRow:
                     (Lab: |2|)
                     (CONTy: (Tyseq: (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))) (LongTyCon: ref-type))))))))))))
           (SEQSpec:
            (VALSpec: (ValDesc: (VId: toString) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: SCon-type)) (CONTy: (Tyseq:) (LongTyCon: string-type)))))
            (VALSpec:
             (ValDesc:
              (VId: tyname)
              (ARROWTy:
               (CONTy: (Tyseq:) (LongTyCon: SCon-type))
               (CONTy: (Tyseq: (CONTy: (Tyseq:) (LongTyCon: TyName-type))) (LongTyCon: option-type))))))))))))))))