Typechecked: {- nonrec -} Main.Parse.parseFile = /\ a.t177 -> \{-classdict-} [] [parseFile.t178 parseLine.t179 parse.t180 parseType.t181 forced.t182] -> parseFile.t178 Main.Parse.parseLine = /\ a.t177 -> \{-classdict-} [] [parseFile.t178 parseLine.t179 parse.t180 parseType.t181 forced.t182] -> parseLine.t179 Main.Parse.parse = /\ a.t177 -> \{-classdict-} [] [parseFile.t178 parseLine.t179 parse.t180 parseType.t181 forced.t182] -> parse.t180 Main.Parse.parseType = /\ a.t177 -> \{-classdict-} [] [parseFile.t178 parseLine.t179 parse.t180 parseType.t181 forced.t182] -> parseType.t181 Main.Parse.forced = /\ a.t177 -> \{-classdict-} [] [parseFile.t178 parseLine.t179 parse.t180 parseType.t181 forced.t182] -> forced.t182 {- nonrec -} defm.Main.Parse.parseFile = let AbsBinds [a.t183] [d.Main.Parse.t184] [(parseFile.t185, parseFile.t186)] (d.Main.Parse.t197, d.Main.Parse.t184) (Main.Parse.parseLine.t193, Main.Parse.parseLine a.t183 d.Main.Parse.t197) (d.Main.Parse.t198, d.Main.Parse.t197) (Main.Parse.forced.t196, Main.Parse.forced a.t183 d.Main.Parse.t198) {- nonrec -} parseFile.t185 :: String -> [a.t183] parseFile.t185 string.r23 | (all a.t183) Main.Parse.forced.t196 x.r24 = x.r24 where AbsBinds [] [] [(x.t189, x.r24)] {- nonrec -} x.t189 :: [a.t183] x.t189 = (map [String, a.t183]) Main.Parse.parseLine.t193 (Main.lines' string.r23) {- nonrec -} in parseFile.t186 defm.Main.Parse.parseLine = let AbsBinds [a.t199] [d.Main.Parse.t200] [(parseLine.t201, parseLine.t202)] (d.Main.Parse.t217, d.Main.Parse.t200) (Main.Parse.parse.t215, Main.Parse.parse a.t199 d.Main.Parse.t217) {- nonrec -} parseLine.t201 :: String -> a.t199 parseLine.t201 = ((.) [String, (a.t199, String), a.t199]) (pl.r25 [String, a.t199]) Main.Parse.parse.t215 where AbsBinds [tt208, tt207] [] [(pl.t204, pl.r25)] {- nonrec -} pl.t204 :: (tt207, tt208) -> tt207 pl.t204 (a.r26, _) = a.r26 {- nonrec -} in parseLine.t202 defm.Main.Parse.parse = let AbsBinds [a.t218] [d.Main.Parse.t219] [(parse.t220, parse.t221)] (d.Main.Parse.t228, d.Main.Parse.t219) (Main.Parse.parseType.t226, Main.Parse.parseType a.t218 d.Main.Parse.t228) {- nonrec -} parse.t220 :: String -> (a.t218, String) parse.t220 = ((.) [String, String, (a.t218, String)]) Main.Parse.parseType.t226 Main.whiteSpace in parse.t221 defm.Main.Parse.forced = let AbsBinds [a.t229] [d.Main.Parse.t230] [(forced.t231, forced.t232)] {- nonrec -} forced.t231 :: a.t229 -> Bool forced.t231 x.r27 = True in forced.t232 defm.Main.Parse.parseType = /\ a.t234 -> \{-dict-} d.Main.Parse.t235 -> (error (String -> (a.t234, String))) "No default method for \"Main.Parse.defm.Main.Parse.parseType\"\n" {- rec -} dfun.Main.Parse.Char = ({-dict-} [] [const.Main.Parse.Char.parseFile, const.Main.Parse.Char.parseLine, const.Main.Parse.Char.parse, const.Main.Parse.Char.parseType, const.Main.Parse.Char.forced]) const.Main.Parse.Char.parseType :: String -> (Char, String) const.Main.Parse.Char.parseType (ch.r64 : str.r65) = (ch.r64, str.r65) const.Main.Parse.Char.forced :: Char -> Bool const.Main.Parse.Char.forced n.r66 = True const.Main.Parse.Char.parseFile = defm.Main.Parse.parseFile Char dfun.Main.Parse.Char const.Main.Parse.Char.parseLine = defm.Main.Parse.parseLine Char dfun.Main.Parse.Char const.Main.Parse.Char.parse = defm.Main.Parse.parse Char dfun.Main.Parse.Char {- rec -} dfun.Main.Parse.Int = ({-dict-} [] [const.Main.Parse.Int.parseFile, const.Main.Parse.Int.parseLine, const.Main.Parse.Int.parse, const.Main.Parse.Int.parseType, const.Main.Parse.Int.forced]) const.Main.Parse.Int.parseType :: String -> (Int, String) const.Main.Parse.Int.parseType str.r67 = (pl.r68 [Char]) ((Main.span' Char) isDigit str.r67) where AbsBinds [tt135] [] [(pl.t131, pl.r68)] {- nonrec -} pl.t131 :: (String, tt135) -> (Int, tt135) pl.t131 (l.r69, r.r70) = (Main.strToInt l.r69, r.r70) {- nonrec -} const.Main.Parse.Int.forced :: Int -> Bool const.Main.Parse.Int.forced n.r71 | n.r71 >=.t140 lit.t142 = True const.Main.Parse.Int.parseFile = defm.Main.Parse.parseFile Int dfun.Main.Parse.Int const.Main.Parse.Int.parseLine = defm.Main.Parse.parseLine Int dfun.Main.Parse.Int const.Main.Parse.Int.parse = defm.Main.Parse.parse Int dfun.Main.Parse.Int AbsBinds [a.t173] [d.Main.Parse.t145] [(d.Main.Parse.t146, dfun.Main.Parse.List)] (/=.t163, neChar) (d.Main.Parse.t175, d.Main.Parse.t145) (Main.Parse.parseLine.t169, Main.Parse.parseLine a.t173 d.Main.Parse.t175) (d.Main.Parse.t176, d.Main.Parse.t175) (Main.Parse.forced.t174, Main.Parse.forced a.t173 d.Main.Parse.t176) {- rec -} d.Main.Parse.t146 = ({-dict-} [] [parseFile.t147, parseLine.t148, parse.t149, parseType.t150, forced.t151]) parseType.t150 :: String -> ([a.t173], String) parseType.t150 more.r73 = ((map [String, a.t173]) Main.Parse.parseLine.t169 (Main.seperatedBy ',' (((++) Char) l.r74 ",")), out.r75) where AbsBinds [] [] [(l.t155, l.r74), (out.t156, out.r75)] {- nonrec -} (l.t155, (']' : out.t156)) :: ([Char], [Char]) (l.t155, (']' : out.t156)) = (Main.span' Char) (\ x.r76 -> x.r76 /=.t163 ']') ((tail Char) more.r73) {- nonrec -} forced.t151 :: [a.t173] -> Bool forced.t151 = (all a.t173) Main.Parse.forced.t174 parseFile.t147 = defm.Main.Parse.parseFile [a.t173] d.Main.Parse.t146 parseLine.t148 = defm.Main.Parse.parseLine [a.t173] d.Main.Parse.t146 parse.t149 = defm.Main.Parse.parse [a.t173] d.Main.Parse.t146 lit.t87 = MkInt 0# lit.t100 = MkInt 10# lit.t122 = MkInt 1# lit.t142 = lit.t87 (>=.t140) = geInt AbsBinds [a.t2] [] [(span'.t1, Main.span')] {- rec -} span'.t1 :: (a.t2 -> Bool) -> [a.t2] -> ([a.t2], [a.t2]) span'.t1 p.r95 [] = ([] (a.t2), [] (a.t2)) span'.t1 p.r96 (x.r97 : xs'.r98) | p.r96 x.r97 = (fixLeak.r99 [a.t2, [a.t2]]) x.r97 (span'.t1 p.r96 xs'.r98) where AbsBinds [tt18, tt17] [] [(fixLeak.t12, fixLeak.r99)] {- nonrec -} fixLeak.t12 :: tt18 -> ([tt18], tt17) -> ([tt18], tt17) fixLeak.t12 x.r100 (xs.r101, ys.r102) = (((:) tt18) x.r100 xs.r101, ys.r102) {- nonrec -} span'.t1 _ xs.r103 = ([] (a.t2), xs.r103) AbsBinds [] [] [(seperatedBy.t28, Main.seperatedBy)] (/=.t49, neChar) {- rec -} seperatedBy.t28 :: Char -> String -> [String] seperatedBy.t28 ch.r87 [] = [] (String) seperatedBy.t28 ch.r88 xs.r89 = twaddle.r90 ch.r88 ((Main.span' Char) (\ x.r94 -> x.r94 /=.t49 ch.r88) xs.r89) where AbsBinds [] [] [(twaddle.t35, twaddle.r90)] {- nonrec -} twaddle.t35 :: Char -> (String, [Char]) -> [String] twaddle.t35 ch.r91 (l.r92, (_ : r.r93)) = ((:) String) l.r92 (seperatedBy.t28 ch.r91 r.r93) {- nonrec -} AbsBinds [] [] [(whiteSpace.t52, Main.whiteSpace)] {- nonrec -} whiteSpace.t52 :: String -> String whiteSpace.t52 = (dropWhile Char) isSpace AbsBinds [] [] [(lines'.t55, Main.lines')] (/=.t72, neChar) {- rec -} lines'.t55 :: [Char] -> [[Char]] lines'.t55 "" = [] ([Char]) lines'.t55 s.r104 = plumb.r105 ((Main.span' Char) ((/=.t72) '\n') s.r104) where AbsBinds [] [] [(plumb.t59, plumb.r105)] {- nonrec -} plumb.t59 :: ([Char], [Char]) -> [[Char]] plumb.t59 (l.r106, s'.r107) = ((:) [Char]) l.r106 (if (null Char) s'.r107 then [] ([Char]) else lines'.t55 ((tail Char) s'.r107)) {- nonrec -} AbsBinds [] [] [(charToInt.t74, Main.charToInt)] (-.t77, minusInt) {- nonrec -} charToInt.t74 :: Char -> Int charToInt.t74 x.r113 = (ord x.r113) -.t77 (ord '0') AbsBinds [] [] [(strToInt.t80, Main.strToInt)] (-.t119, minusInt) (d.Integral.t124, dfun.Integral.Int) {- nonrec -} strToInt.t80 :: String -> Int strToInt.t80 x.r108 = strToInt'.r109.t117 (((length Char) x.r108) -.t119 lit.t122) x.r108 where AbsBinds [a.t96] [d.Integral.t114] [(strToInt'.t83, strToInt'.r109)] (d.Real.t115, sdsel.Integral.Real a.t96 d.Integral.t114) (d.Num.t111, sdsel.Real.Num a.t96 d.Real.t115) (fromInt.t110, fromInt a.t96 d.Num.t111) (lit.t107, fromInt.t110 (MkInt 1#)) (d.Num.t112, d.Num.t111) (-.t105, (-) a.t96 d.Num.t112) (d.Num.t113, dfun.Num.Int) (^.t98, (^) [a.t96, Int] [d.Num.t113, d.Integral.t114]) (*.t95, timesInt) (+.t93, plusInt) {- rec -} strToInt'.t83 :: a.t96 -> [Char] -> Int strToInt'.t83 _ [] = lit.t87 strToInt'.t83 x.r112 (a.r110 : l.r111) = ((Main.charToInt a.r110) *.t95 (lit.t100 ^.t98 x.r112)) +.t93 (strToInt'.t83 (x.r112 -.t105 lit.t107) l.r111) {- nonrec -} strToInt'.r109.t117 = strToInt'.r109 Int d.Integral.t124