CurryProg "Dequeue" ["Prelude"] [CType ("Dequeue","Queue") Public [(0,"a")] [CCons ("Dequeue","S") 4 Private [CTCons ("Prelude","Int") [],CTCons ("Prelude","[]") [CTVar (0,"a")],CTCons ("Prelude","Int") [],CTCons ("Prelude","[]") [CTVar (0,"a")]]]] [CFunc ("Dequeue","check") 4 Private (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","[]") [CTVar (0,"a")]) (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","[]") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")]))))) (CRules CFlex [CRule [CPVar (0,"lenf"),CPVar (1,"f"),CPVar (2,"lenr"),CPVar (3,"r")] [(CApply (CApply (CSymbol ("Prelude","<=")) (CVar (0,"lenf"))) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","*")) (CLit (CIntc 3))) (CVar (2,"lenr")))) (CLit (CIntc 1))),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","S")) (CVar (0,"lenf"))) (CVar (1,"f"))) (CVar (2,"lenr"))) (CVar (3,"r"))),(CSymbol ("Prelude","otherwise"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","S")) (CVar (5,"lenf'"))) (CVar (7,"f'"))) (CVar (6,"lenr'"))) (CVar (9,"r'")))] [CLocalPat (CPVar (4,"len")) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (0,"lenf"))) (CVar (2,"lenr"))) [],CLocalPat (CPVar (5,"lenf'")) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (4,"len"))) (CLit (CIntc 2))) [],CLocalPat (CPVar (6,"lenr'")) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (4,"len"))) (CVar (5,"lenf'"))) [],CLocalPat (CPComb ("Prelude","(,)") [CPVar (7,"f'"),CPVar (8,"rf'")]) (CApply (CApply (CSymbol ("Prelude","splitAt")) (CVar (5,"lenf'"))) (CVar (1,"f"))) [],CLocalPat (CPVar (9,"r'")) (CApply (CApply (CSymbol ("Prelude","++")) (CVar (3,"r"))) (CApply (CSymbol ("Prelude","reverse")) (CVar (8,"rf'")))) []]]), CFunc ("Dequeue","cons") 2 Public (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"x"),CPComb ("Dequeue","S") [CPVar (1,"lenf"),CPVar (2,"f"),CPVar (3,"lenr"),CPVar (4,"r")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (1,"lenf"))) (CLit (CIntc 1)))) (CApply (CApply (CSymbol ("Prelude",":")) (CVar (0,"x"))) (CVar (2,"f")))) (CVar (3,"lenr"))) (CVar (4,"r")))] []]), CFunc ("Dequeue","deqHead") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTVar (0,"a"))) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"lenf"),CPVar (1,"f"),CPVar (2,"_"),CPVar (3,"r")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","head")) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (0,"lenf"))) (CLit (CIntc 0)))) (CVar (3,"r"))) (CVar (1,"f"))))] []]), CFunc ("Dequeue","deqInit") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPComb ("Prelude","[]") []]] [(CSymbol ("Prelude","success"),CSymbol ("Dequeue","empty"))] [],CRule [CPComb ("Dequeue","S") [CPVar (3,"lenf"),CPVar (4,"f"),CPVar (5,"lenr"),CPComb ("Prelude",":") [CPVar (6,"_"),CPVar (7,"rs")]]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CVar (3,"lenf"))) (CVar (4,"f"))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (5,"lenr"))) (CLit (CIntc 1)))) (CVar (7,"rs")))] []]), CFunc ("Dequeue","deqLast") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTVar (0,"a"))) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPVar (1,"f"),CPVar (2,"lenr"),CPVar (3,"r")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","head")) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (2,"lenr"))) (CLit (CIntc 0)))) (CVar (1,"f"))) (CVar (3,"r"))))] []]), CFunc ("Dequeue","deqLength") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Prelude","Int") [])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"lenf"),CPVar (1,"_"),CPVar (2,"lenr"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","+")) (CVar (0,"lenf"))) (CVar (2,"lenr")))] []]), CFunc ("Dequeue","deqReverse") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"lenf"),CPVar (1,"f"),CPVar (2,"lenr"),CPVar (3,"r")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","S")) (CVar (2,"lenr"))) (CVar (3,"r"))) (CVar (0,"lenf"))) (CVar (1,"f")))] []]), CFunc ("Dequeue","deqTail") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPComb ("Prelude","[]") [],CPVar (1,"_"),CPVar (2,"_")]] [(CSymbol ("Prelude","success"),CSymbol ("Dequeue","empty"))] [],CRule [CPComb ("Dequeue","S") [CPVar (3,"lenf"),CPComb ("Prelude",":") [CPVar (4,"_"),CPVar (5,"fs")],CPVar (6,"lenr"),CPVar (7,"r")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Dequeue","deqReverse")) (CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CVar (6,"lenr"))) (CVar (7,"r"))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (3,"lenf"))) (CLit (CIntc 1)))) (CVar (5,"fs"))))] []]), CFunc ("Dequeue","deqToList") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Prelude","[]") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPVar (1,"xs"),CPVar (2,"_"),CPVar (3,"ys")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","++")) (CVar (1,"xs"))) (CApply (CSymbol ("Prelude","reverse")) (CVar (3,"ys"))))] []]), CFunc ("Dequeue","empty") 0 Public (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","S")) (CLit (CIntc 0))) (CSymbol ("Prelude","[]"))) (CLit (CIntc 0))) (CSymbol ("Prelude","[]")))] []]), CFunc ("Dequeue","isEmpty") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"lenf"),CPVar (1,"_"),CPVar (2,"lenr"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","==")) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (0,"lenf"))) (CVar (2,"lenr")))) (CLit (CIntc 0)))] []]), CFunc ("Dequeue","listToDeq") 1 Public (CFuncType (CTCons ("Prelude","[]") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"xs")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CApply (CSymbol ("Prelude","length")) (CVar (0,"xs")))) (CVar (0,"xs"))) (CLit (CIntc 0))) (CSymbol ("Prelude","[]")))] []]), CFunc ("Dequeue","matchHead") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Prelude","Maybe") [CTCons ("Prelude","(,)") [CTVar (0,"a"),CTCons ("Dequeue","Queue") [CTVar (0,"a")]]])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPComb ("Prelude","[]") [],CPVar (1,"_"),CPComb ("Prelude","[]") []]] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","Nothing"))] [],CRule [CPComb ("Dequeue","S") [CPVar (2,"_"),CPComb ("Prelude","[]") [],CPVar (3,"_"),CPComb ("Prelude",":") [CPVar (4,"x"),CPComb ("Prelude","[]") []]]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","Just")) (CApply (CApply (CSymbol ("Prelude","(,)")) (CVar (4,"x"))) (CSymbol ("Dequeue","empty"))))] [],CRule [CPComb ("Dequeue","S") [CPVar (5,"lenf"),CPComb ("Prelude",":") [CPVar (6,"x"),CPVar (7,"xs")],CPVar (8,"lenr"),CPVar (9,"r")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","Just")) (CApply (CApply (CSymbol ("Prelude","(,)")) (CVar (6,"x"))) (CApply (CSymbol ("Dequeue","deqReverse")) (CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CVar (8,"lenr"))) (CVar (9,"r"))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (5,"lenf"))) (CLit (CIntc 1)))) (CVar (7,"xs"))))))] []]), CFunc ("Dequeue","matchLast") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Prelude","Maybe") [CTCons ("Prelude","(,)") [CTVar (0,"a"),CTCons ("Dequeue","Queue") [CTVar (0,"a")]]])) (CRules CFlex [CRule [CPComb ("Dequeue","S") [CPVar (0,"_"),CPComb ("Prelude","[]") [],CPVar (1,"_"),CPComb ("Prelude","[]") []]] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","Nothing"))] [],CRule [CPComb ("Dequeue","S") [CPVar (2,"_"),CPComb ("Prelude",":") [CPVar (3,"x"),CPComb ("Prelude","[]") []],CPVar (4,"_"),CPComb ("Prelude","[]") []]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","Just")) (CApply (CApply (CSymbol ("Prelude","(,)")) (CVar (3,"x"))) (CSymbol ("Dequeue","empty"))))] [],CRule [CPComb ("Dequeue","S") [CPVar (5,"lenf"),CPVar (6,"f"),CPVar (7,"lenr"),CPComb ("Prelude",":") [CPVar (8,"x"),CPVar (9,"xs")]]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Prelude","Just")) (CApply (CApply (CSymbol ("Prelude","(,)")) (CVar (8,"x"))) (CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CVar (5,"lenf"))) (CVar (6,"f"))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (7,"lenr"))) (CLit (CIntc 1)))) (CVar (9,"xs")))))] []]), CFunc ("Dequeue","rotate") 1 Public (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"q")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Dequeue","snoc")) (CApply (CSymbol ("Dequeue","deqHead")) (CVar (0,"q")))) (CApply (CSymbol ("Dequeue","deqTail")) (CVar (0,"q"))))] []]), CFunc ("Dequeue","snoc") 2 Public (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("Dequeue","Queue") [CTVar (0,"a")]) (CTCons ("Dequeue","Queue") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"x"),CPComb ("Dequeue","S") [CPVar (1,"lenf"),CPVar (2,"f"),CPVar (3,"lenr"),CPVar (4,"r")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("Dequeue","deqReverse")) (CApply (CApply (CApply (CApply (CSymbol ("Dequeue","check")) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (3,"lenr"))) (CLit (CIntc 1)))) (CApply (CApply (CSymbol ("Prelude",":")) (CVar (0,"x"))) (CVar (4,"r")))) (CVar (1,"lenf"))) (CVar (2,"f"))))] []])] []