hamlet/QUEUE-sig.ss
(module QUEUE-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: QUEUE-sig)
       (SIGSigExp:
        (SEQSpec:
         (TYPESpec: (TypDec: (TyVarseq: (TyVar: |'a|)) (TyCon: queue-type)))
         (SEQSpec:
          (EXCEPTIONSpec: (ExDesc: (VId: Dequeue)))
          (SEQSpec:
           (VALSpec:
            (ValDesc: (VId: mkQueue) (ARROWTy: (CONTy: (Tyseq:) (LongTyCon: unit-type)) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)))))
           (SEQSpec:
            (VALSpec:
             (ValDesc: (VId: clear) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type)))))
            (SEQSpec:
             (VALSpec:
              (ValDesc: (VId: isEmpty) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
             (SEQSpec:
              (VALSpec:
               (ValDesc:
                (VId: enqueue)
                (ARROWTy:
                 (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|)))))
                 (CONTy: (Tyseq:) (LongTyCon: unit-type)))))
              (SEQSpec:
               (VALSpec: (ValDesc: (VId: dequeue) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (VARTy: (TyVar: |'a|)))))
               (SEQSpec:
                (VALSpec:
                 (ValDesc:
                  (VId: delete)
                  (ARROWTy:
                   (PARTy:
                    (RECORDTy:
                     (TyRow:
                      (Lab: |1|)
                      (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type))
                      (TyRow: (Lab: |2|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))))))
                   (CONTy: (Tyseq:) (LongTyCon: unit-type)))))
                (SEQSpec:
                 (VALSpec: (ValDesc: (VId: head) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (VARTy: (TyVar: |'a|)))))
                 (SEQSpec:
                  (VALSpec:
                   (ValDesc:
                    (VId: peek)
                    (ARROWTy:
                     (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type))
                     (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)))))
                  (SEQSpec:
                   (VALSpec:
                    (ValDesc:
                     (VId: length)
                     (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
                   (SEQSpec:
                    (VALSpec:
                     (ValDesc:
                      (VId: contents)
                      (ARROWTy:
                       (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type))
                       (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: list-type)))))
                    (SEQSpec:
                     (VALSpec:
                      (ValDesc:
                       (VId: app)
                       (ARROWTy:
                        (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: unit-type))))
                        (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (CONTy: (Tyseq:) (LongTyCon: unit-type))))))
                     (SEQSpec:
                      (VALSpec:
                       (ValDesc:
                        (VId: map)
                        (ARROWTy:
                         (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (VARTy: (TyVar: |'b|))))
                         (ARROWTy:
                          (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type))
                          (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: queue-type))))))
                      (SEQSpec:
                       (VALSpec:
                        (ValDesc:
                         (VId: foldl)
                         (ARROWTy:
                          (PARTy:
                           (ARROWTy:
                            (RECORDTy: (TyRow: (Lab: |1|) (VARTy: (TyVar: |'a|)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'b|)))))
                            (VARTy: (TyVar: |'b|))))
                          (ARROWTy:
                           (VARTy: (TyVar: |'b|))
                           (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (VARTy: (TyVar: |'b|)))))))
                       (VALSpec:
                        (ValDesc:
                         (VId: foldr)
                         (ARROWTy:
                          (PARTy:
                           (ARROWTy:
                            (RECORDTy: (TyRow: (Lab: |1|) (VARTy: (TyVar: |'a|)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'b|)))))
                            (VARTy: (TyVar: |'b|))))
                          (ARROWTy:
                           (VARTy: (TyVar: |'b|))
                           (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: queue-type)) (VARTy: (TyVar: |'b|)))))))))))))))))))))))))))))