hamlet/FIFO-sig.ss
(module FIFO-sig (planet chongkai/sml)
  (#%module-begin
   (Program:
    (SIGDECTopDec:
     (SigDec:
      (SigBind:
       (SigId: FIFO-sig)
       (SIGSigExp:
        (SEQSpec:
         (TYPESpec: (TypDec: (TyVarseq: (TyVar: |'a|)) (TyCon: fifo-type)))
         (SEQSpec:
          (EXCEPTIONSpec: (ExDesc: (VId: Dequeue)))
          (SEQSpec:
           (VALSpec: (ValDesc: (VId: empty) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type))))
           (SEQSpec:
            (VALSpec:
             (ValDesc: (VId: isEmpty) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)) (CONTy: (Tyseq:) (LongTyCon: bool-type)))))
            (SEQSpec:
             (VALSpec:
              (ValDesc:
               (VId: enqueue)
               (ARROWTy:
                (RECORDTy: (TyRow: (Lab: |1|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|)))))
                (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)))))
             (SEQSpec:
              (VALSpec:
               (ValDesc:
                (VId: dequeue)
                (ARROWTy:
                 (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type))
                 (RECORDTy:
                  (TyRow: (Lab: |1|) (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)) (TyRow: (Lab: |2|) (VARTy: (TyVar: |'a|))))))))
              (SEQSpec:
               (VALSpec:
                (ValDesc:
                 (VId: delete)
                 (ARROWTy:
                  (PARTy:
                   (RECORDTy:
                    (TyRow:
                     (Lab: |1|)
                     (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type))
                     (TyRow: (Lab: |2|) (PARTy: (ARROWTy: (VARTy: (TyVar: |'a|)) (CONTy: (Tyseq:) (LongTyCon: bool-type))))))))
                  (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)))))
               (SEQSpec:
                (VALSpec: (ValDesc: (VId: head) (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)) (VARTy: (TyVar: |'a|)))))
                (SEQSpec:
                 (VALSpec:
                  (ValDesc:
                   (VId: peek)
                   (ARROWTy:
                    (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type))
                    (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: option-type)))))
                 (SEQSpec:
                  (VALSpec:
                   (ValDesc:
                    (VId: length)
                    (ARROWTy: (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-type)) (CONTy: (Tyseq:) (LongTyCon: int-type)))))
                  (SEQSpec:
                   (VALSpec:
                    (ValDesc:
                     (VId: contents)
                     (ARROWTy:
                      (CONTy: (Tyseq: (VARTy: (TyVar: |'a|))) (LongTyCon: fifo-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: fifo-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: fifo-type))
                         (CONTy: (Tyseq: (VARTy: (TyVar: |'b|))) (LongTyCon: fifo-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: fifo-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: fifo-type)) (VARTy: (TyVar: |'b|))))))))))))))))))))))))))))