301.41/272.55 MAYBE 303.84/273.22 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 303.84/273.22 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 303.84/273.22 303.84/273.22 303.84/273.22 H-Termination with start terms of the given HASKELL could not be shown: 303.84/273.22 303.84/273.22 (0) HASKELL 303.84/273.22 (1) LR [EQUIVALENT, 0 ms] 303.84/273.22 (2) HASKELL 303.84/273.22 (3) CR [EQUIVALENT, 0 ms] 303.84/273.22 (4) HASKELL 303.84/273.22 (5) IFR [EQUIVALENT, 0 ms] 303.84/273.22 (6) HASKELL 303.84/273.22 (7) BR [EQUIVALENT, 0 ms] 303.84/273.22 (8) HASKELL 303.84/273.22 (9) COR [EQUIVALENT, 50 ms] 303.84/273.22 (10) HASKELL 303.84/273.22 (11) LetRed [EQUIVALENT, 17 ms] 303.84/273.22 (12) HASKELL 303.84/273.22 (13) NumRed [SOUND, 0 ms] 303.84/273.22 (14) HASKELL 303.84/273.22 303.84/273.22 303.84/273.22 ---------------------------------------- 303.84/273.22 303.84/273.22 (0) 303.84/273.22 Obligation: 303.84/273.22 mainModule Main 303.84/273.22 module Main where { 303.84/273.22 import qualified Prelude; 303.84/273.22 } 303.84/273.22 303.84/273.22 ---------------------------------------- 303.84/273.22 303.84/273.22 (1) LR (EQUIVALENT) 303.84/273.22 Lambda Reductions: 303.84/273.22 The following Lambda expression 303.84/273.22 "\nd->n * radix + d" 303.84/273.22 is transformed to 303.84/273.22 "readInt0 radix n d = n * radix + d; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu77->case vu77 of { 303.84/273.22 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "readInt1 radix digToInt vu77 = case vu77 of { 303.84/273.22 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu54->case vu54 of { 303.84/273.22 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex0 vu54 = case vu54 of { 303.84/273.22 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu56->case vu56 of { 303.84/273.22 (str,u) -> (ch ++ str,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexString0 ch vu56 = case vu56 of { 303.84/273.22 (str,u) -> (ch ++ str,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu57->case vu57 of { 303.84/273.22 (ch,t) -> concatMap (lexString0 ch) (lexString t); 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexString1 vu57 = case vu57 of { 303.84/273.22 (ch,t) -> concatMap (lexString0 ch) (lexString t); 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu58->case vu58 of { 303.84/273.22 '\' : t -> ([],t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexStrItem0 vu58 = case vu58 of { 303.84/273.22 '\' : t -> ([],t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu55->case vu55 of { 303.84/273.22 (str,t) -> ('"' : str,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex1 vu55 = case vu55 of { 303.84/273.22 (str,t) -> ('"' : str,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu63->case vu63 of { 303.84/273.22 (e,u) -> ('.' : ds ++ e,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexFracExp0 ds vu63 = case vu63 of { 303.84/273.22 (e,u) -> ('.' : ds ++ e,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu64->case vu64 of { 303.84/273.22 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexFracExp1 vu64 = case vu64 of { 303.84/273.22 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu65->case vu65 of { 303.84/273.22 (ds,u) -> (e : c : ds,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexExp0 e c vu65 = case vu65 of { 303.84/273.22 (ds,u) -> (e : c : ds,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu66->case vu66 of { 303.84/273.22 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexExp1 e vu66 = case vu66 of { 303.84/273.22 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu67->case vu67 of { 303.84/273.22 (ds,t) -> (e : ds,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lexExp2 e vu67 = case vu67 of { 303.84/273.22 (ds,t) -> (e : ds,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu59->case vu59 of { 303.84/273.22 (sym,t) -> (c : sym,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex2 c vu59 = case vu59 of { 303.84/273.22 (sym,t) -> (c : sym,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu60->case vu60 of { 303.84/273.22 (nam,t) -> (c : nam,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex3 c vu60 = case vu60 of { 303.84/273.22 (nam,t) -> (c : nam,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu61->case vu61 of { 303.84/273.22 (fe,t) -> (c : ds ++ fe,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex4 c ds vu61 = case vu61 of { 303.84/273.22 (fe,t) -> (c : ds ++ fe,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu62->case vu62 of { 303.84/273.22 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "lex5 c vu62 = case vu62 of { 303.84/273.22 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\ab->(a,b)" 303.84/273.22 is transformed to 303.84/273.22 "zip0 a b = (a,b); 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu68->case vu68 of { 303.84/273.22 (cs@(_ : _),t) -> (cs,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "nonnull0 vu68 = case vu68 of { 303.84/273.22 (cs@(_ : _),t) -> (cs,t) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu48->case vu48 of { 303.84/273.22 (')' : [],u) -> (x,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "mandatory0 x vu48 = case vu48 of { 303.84/273.22 (')' : [],u) -> (x,u) : []; 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu49->case vu49 of { 303.84/273.22 (x,t) -> concatMap (mandatory0 x) (lex t); 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "mandatory1 vu49 = case vu49 of { 303.84/273.22 (x,t) -> concatMap (mandatory0 x) (lex t); 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.22 "\vu50->case vu50 of { 303.84/273.22 ('(' : [],s) -> concatMap mandatory1 (optional s); 303.84/273.22 _ -> []} 303.84/273.22 " 303.84/273.22 is transformed to 303.84/273.22 "mandatory2 vu50 = case vu50 of { 303.84/273.22 ('(' : [],s) -> concatMap mandatory1 (optional s); 303.84/273.22 _ -> []} 303.84/273.22 ; 303.84/273.22 " 303.84/273.22 The following Lambda expression 303.84/273.23 "\vu80->case vu80 of { 303.84/273.23 (n,[]) -> (n,s) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read''0 s vu80 = case vu80 of { 303.84/273.23 (n,[]) -> (n,s) : []; 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu81->case vu81 of { 303.84/273.23 (str,s) -> concatMap (read''0 s) (readPos str); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read''1 readPos vu81 = case vu81 of { 303.84/273.23 (str,s) -> concatMap (read''0 s) (readPos str); 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu78->case vu78 of { 303.84/273.23 (x,t) -> (`negate` x,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read'0 vu78 = case vu78 of { 303.84/273.23 (x,t) -> (`negate` x,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu79->case vu79 of { 303.84/273.23 ('-' : [],s) -> concatMap read'0 (read'' s); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read'1 vu79 = case vu79 of { 303.84/273.23 ('-' : [],s) -> concatMap read'0 (read'' s); 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\ex->if isEOFError ex then return '\10' else ioError ex" 303.84/273.23 is transformed to 303.84/273.23 "getRest0 ex = if isEOFError ex then return '\10' else ioError ex; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\cs->return (c : cs)" 303.84/273.23 is transformed to 303.84/273.23 "getRest1 c cs = return (c : cs); 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\c->if c == '\10' then return [] else getRest >>= getRest1 c" 303.84/273.23 is transformed to 303.84/273.23 "getRest2 c = if c == '\10' then return [] else getRest >>= getRest1 c; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\ls->return (c : ls)" 303.84/273.23 is transformed to 303.84/273.23 "getLine0 c ls = return (c : ls); 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\c->if c == '\10' then return [] else getRest >>= getLine0 c" 303.84/273.23 is transformed to 303.84/273.23 "getLine1 c = if c == '\10' then return [] else getRest >>= getLine0 c; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\d->fromEnum d - fromEnum_0" 303.84/273.23 is transformed to 303.84/273.23 "readDec0 d = fromEnum d - fromEnum_0; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu89->case vu89 of { 303.84/273.23 ([],[]) -> x : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readIO0 x vu89 = case vu89 of { 303.84/273.23 ([],[]) -> x : []; 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu90->case vu90 of { 303.84/273.23 (x,t) -> concatMap (readIO0 x) (lex t); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readIO1 vu90 = case vu90 of { 303.84/273.23 (x,t) -> concatMap (readIO0 x) (lex t); 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\r->return r" 303.84/273.23 is transformed to 303.84/273.23 "readLn0 r = return r; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\l->readIO l >>= readLn0" 303.84/273.23 is transformed to 303.84/273.23 "readLn1 l = readIO l >>= readLn0; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu69->case vu69 of { 303.84/273.23 ([],s') -> (mne,s') : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc0 mne vu69 = case vu69 of { 303.84/273.23 ([],s') -> (mne,s') : []; 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\vu70->case vu70 of { 303.84/273.23 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc1 s vu70 = case vu70 of { 303.84/273.23 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 _ -> []} 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\(_,zs)->zs" 303.84/273.23 is transformed to 303.84/273.23 "zs0 (_,zs) = zs; 303.84/273.23 " 303.84/273.23 The following Lambda expression 303.84/273.23 "\(ys,_)->ys" 303.84/273.23 is transformed to 303.84/273.23 "ys0 (ys,_) = ys; 303.84/273.23 " 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (2) 303.84/273.23 Obligation: 303.84/273.23 mainModule Main 303.84/273.23 module Main where { 303.84/273.23 import qualified Prelude; 303.84/273.23 } 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (3) CR (EQUIVALENT) 303.84/273.23 Case Reductions: 303.84/273.23 The following Case expression 303.84/273.23 "case vu90 of { 303.84/273.23 (x,t) -> concatMap (readIO0 x) (lex t); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readIO10 (x,t) = concatMap (readIO0 x) (lex t); 303.84/273.23 readIO10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu89 of { 303.84/273.23 ([],[]) -> x : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readIO00 x ([],[]) = x : []; 303.84/273.23 readIO00 x _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu77 of { 303.84/273.23 (ds,r) -> (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readInt10 radix digToInt (ds,r) = (foldl1 (readInt0 radix) (map (fromIntegral . digToInt) ds),r) : []; 303.84/273.23 readInt10 radix digToInt _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu55 of { 303.84/273.23 (str,t) -> ('"' : str,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex10 (str,t) = ('"' : str,t) : []; 303.84/273.23 lex10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu57 of { 303.84/273.23 (ch,t) -> concatMap (lexString0 ch) (lexString t); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 303.84/273.23 lexString10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu56 of { 303.84/273.23 (str,u) -> (ch ++ str,u) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexString00 ch (str,u) = (ch ++ str,u) : []; 303.84/273.23 lexString00 ch _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu58 of { 303.84/273.23 '\' : t -> ([],t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexStrItem00 ('\' : t) = ([],t) : []; 303.84/273.23 lexStrItem00 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu59 of { 303.84/273.23 (sym,t) -> (c : sym,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex20 c (sym,t) = (c : sym,t) : []; 303.84/273.23 lex20 c _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu67 of { 303.84/273.23 (ds,t) -> (e : ds,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexExp20 e (ds,t) = (e : ds,t) : []; 303.84/273.23 lexExp20 e _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu65 of { 303.84/273.23 (ds,u) -> (e : c : ds,u) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexExp00 e c (ds,u) = (e : c : ds,u) : []; 303.84/273.23 lexExp00 e c _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu62 of { 303.84/273.23 (ds,s) -> concatMap (lex4 c ds) (lexFracExp s); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 303.84/273.23 lex50 c _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu66 of { 303.84/273.23 c : t -> if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexExp10 e (c : t) = if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []; 303.84/273.23 lexExp10 e _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu60 of { 303.84/273.23 (nam,t) -> (c : nam,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex30 c (nam,t) = (c : nam,t) : []; 303.84/273.23 lex30 c _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu61 of { 303.84/273.23 (fe,t) -> (c : ds ++ fe,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 303.84/273.23 lex40 c ds _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu63 of { 303.84/273.23 (e,u) -> ('.' : ds ++ e,u) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 303.84/273.23 lexFracExp00 ds _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu64 of { 303.84/273.23 (ds,t) -> concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.23 lexFracExp10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu54 of { 303.84/273.23 (ch,''' : t) -> if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex00 (ch,''' : t) = if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []; 303.84/273.23 lex00 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu48 of { 303.84/273.23 (')' : [],u) -> (x,u) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "mandatory00 x (')' : [],u) = (x,u) : []; 303.84/273.23 mandatory00 x _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu49 of { 303.84/273.23 (x,t) -> concatMap (mandatory0 x) (lex t); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 303.84/273.23 mandatory10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu50 of { 303.84/273.23 ('(' : [],s) -> concatMap mandatory1 (optional s); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 303.84/273.23 mandatory20 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu68 of { 303.84/273.23 (cs@(_ : _),t) -> (cs,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "nonnull00 (cs@(_ : _),t) = (cs,t) : []; 303.84/273.23 nonnull00 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu79 of { 303.84/273.23 ('-' : [],s) -> concatMap read'0 (read'' s); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read'10 ('-' : [],s) = concatMap read'0 (read'' s); 303.84/273.23 read'10 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu78 of { 303.84/273.23 (x,t) -> (`negate` x,t) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read'00 (x,t) = (`negate` x,t) : []; 303.84/273.23 read'00 _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu80 of { 303.84/273.23 (n,[]) -> (n,s) : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read''00 s (n,[]) = (n,s) : []; 303.84/273.23 read''00 s _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu81 of { 303.84/273.23 (str,s) -> concatMap (read''0 s) (readPos str); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read''10 readPos (str,s) = concatMap (read''0 s) (readPos str); 303.84/273.23 read''10 readPos _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case concatMap readIO1 (reads s) of { 303.84/273.23 x : [] -> return x; 303.84/273.23 [] -> ioError (userError ('N' : 'P' : [])); 303.84/273.23 _ -> ioError (userError ('A' : 'P' : []))} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "readIO2 (x : []) = return x; 303.84/273.23 readIO2 [] = ioError (userError ('N' : 'P' : [])); 303.84/273.23 readIO2 _ = ioError (userError ('A' : 'P' : [])); 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case concatMap (lexEsc1 s) table of { 303.84/273.23 pr : _ -> pr : []; 303.84/273.23 [] -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc2 (pr : _) = pr : []; 303.84/273.23 lexEsc2 [] = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu69 of { 303.84/273.23 ([],s') -> (mne,s') : []; 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc00 mne ([],s') = (mne,s') : []; 303.84/273.23 lexEsc00 mne _ = []; 303.84/273.23 " 303.84/273.23 The following Case expression 303.84/273.23 "case vu70 of { 303.84/273.23 (c,mne) -> concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 _ -> []} 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 lexEsc10 s _ = []; 303.84/273.23 " 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (4) 303.84/273.23 Obligation: 303.84/273.23 mainModule Main 303.84/273.23 module Main where { 303.84/273.23 import qualified Prelude; 303.84/273.23 } 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (5) IFR (EQUIVALENT) 303.84/273.23 If Reductions: 303.84/273.23 The following If expression 303.84/273.23 "if c `elem` '+' : '-' : [] then concatMap (lexExp0 e c) (lexDigits t) else []" 303.84/273.23 is transformed to 303.84/273.23 "lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 303.84/273.23 lexExp100 e c t False = []; 303.84/273.23 " 303.84/273.23 The following If expression 303.84/273.23 "if b then mandatory else optional" 303.84/273.23 is transformed to 303.84/273.23 "readParen0 True = mandatory; 303.84/273.23 readParen0 False = optional; 303.84/273.23 " 303.84/273.23 The following If expression 303.84/273.23 "if isEOFError ex then return '\10' else ioError ex" 303.84/273.23 is transformed to 303.84/273.23 "getRest00 ex True = return '\10'; 303.84/273.23 getRest00 ex False = ioError ex; 303.84/273.23 " 303.84/273.23 The following If expression 303.84/273.23 "if c == '\10' then return [] else getRest >>= getLine0 c" 303.84/273.23 is transformed to 303.84/273.23 "getLine10 c True = return []; 303.84/273.23 getLine10 c False = getRest >>= getLine0 c; 303.84/273.23 " 303.84/273.23 The following If expression 303.84/273.23 "if c == '\10' then return [] else getRest >>= getRest1 c" 303.84/273.23 is transformed to 303.84/273.23 "getRest20 c True = return []; 303.84/273.23 getRest20 c False = getRest >>= getRest1 c; 303.84/273.23 " 303.84/273.23 The following If expression 303.84/273.23 "if ch /= ''' : [] then (''' : ch ++ ''' : [],t) : [] else []" 303.84/273.23 is transformed to 303.84/273.23 "lex000 ch t True = (''' : ch ++ ''' : [],t) : []; 303.84/273.23 lex000 ch t False = []; 303.84/273.23 " 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (6) 303.84/273.23 Obligation: 303.84/273.23 mainModule Main 303.84/273.23 module Main where { 303.84/273.23 import qualified Prelude; 303.84/273.23 } 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (7) BR (EQUIVALENT) 303.84/273.23 Replaced joker patterns by fresh variables and removed binding patterns. 303.84/273.23 303.84/273.23 Binding Reductions: 303.84/273.23 The bind variable of the following binding Pattern 303.84/273.23 "xs@(yw : yx)" 303.84/273.23 is replaced by the following term 303.84/273.23 "yw : yx" 303.84/273.23 The bind variable of the following binding Pattern 303.84/273.23 "xs@(zu : zv)" 303.84/273.23 is replaced by the following term 303.84/273.23 "zu : zv" 303.84/273.23 The bind variable of the following binding Pattern 303.84/273.23 "cs@(vuu : vuv)" 303.84/273.23 is replaced by the following term 303.84/273.23 "vuu : vuv" 303.84/273.23 The bind variable of the following binding Pattern 303.84/273.23 "s@(vxv : vxw)" 303.84/273.23 is replaced by the following term 303.84/273.23 "vxv : vxw" 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (8) 303.84/273.23 Obligation: 303.84/273.23 mainModule Main 303.84/273.23 module Main where { 303.84/273.23 import qualified Prelude; 303.84/273.23 } 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (9) COR (EQUIVALENT) 303.84/273.23 Cond Reductions: 303.84/273.23 The following Function with conditions 303.84/273.23 "takeWhile p [] = []; 303.84/273.23 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "takeWhile p [] = takeWhile3 p []; 303.84/273.23 takeWhile p (x : xs) = takeWhile2 p (x : xs); 303.84/273.23 " 303.84/273.23 "takeWhile1 p x xs True = x : takeWhile p xs; 303.84/273.23 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 303.84/273.23 " 303.84/273.23 "takeWhile0 p x xs True = []; 303.84/273.23 " 303.84/273.23 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 303.84/273.23 " 303.84/273.23 "takeWhile3 p [] = []; 303.84/273.23 takeWhile3 vyx vyy = takeWhile2 vyx vyy; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexString ('"' : s) = ('"' : [],s) : []; 303.84/273.23 lexString s = concatMap lexString1 (lexStrItem s); 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexString (vzu : s) = lexString4 (vzu : s); 303.84/273.23 lexString s = lexString2 s; 303.84/273.23 " 303.84/273.23 "lexString2 s = concatMap lexString1 (lexStrItem s); 303.84/273.23 " 303.84/273.23 "lexString3 True (vzu : s) = ('"' : [],s) : []; 303.84/273.23 lexString3 vzv vzw = lexString2 vzw; 303.84/273.23 " 303.84/273.23 "lexString4 (vzu : s) = lexString3 (vzu == '"') (vzu : s); 303.84/273.23 lexString4 vzx = lexString2 vzx; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lexStrItem s = lexLitChar s; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexStrItem (wvv : wvz) = lexStrItem7 (wvv : wvz); 303.84/273.23 lexStrItem (vzz : wuw) = lexStrItem4 (vzz : wuw); 303.84/273.23 lexStrItem s = lexStrItem1 s; 303.84/273.23 " 303.84/273.23 "lexStrItem1 s = lexLitChar s; 303.84/273.23 " 303.84/273.23 "lexStrItem2 vzz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lexStrItem2 vzz c s False = lexStrItem1 (vzz : c : s); 303.84/273.23 " 303.84/273.23 "lexStrItem3 True (vzz : c : s) = lexStrItem2 vzz c s (isSpace c); 303.84/273.23 lexStrItem3 wux wuy = lexStrItem1 wuy; 303.84/273.23 " 303.84/273.23 "lexStrItem4 (vzz : wuw) = lexStrItem3 (vzz == '\') (vzz : wuw); 303.84/273.23 lexStrItem4 wuz = lexStrItem1 wuz; 303.84/273.23 " 303.84/273.23 "lexStrItem5 True (wvv : wvx : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lexStrItem5 wwu wwv = lexStrItem4 wwv; 303.84/273.23 " 303.84/273.23 "lexStrItem6 True (wvv : wvx : s) = lexStrItem5 (wvx == '&') (wvv : wvx : s); 303.84/273.23 lexStrItem6 www wwx = lexStrItem4 wwx; 303.84/273.23 " 303.84/273.23 "lexStrItem7 (wvv : wvz) = lexStrItem6 (wvv == '\') (wvv : wvz); 303.84/273.23 lexStrItem7 wwy = lexStrItem4 wwy; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexStrItem00 ('\' : t) = ([],t) : []; 303.84/273.23 lexStrItem00 wv = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexStrItem00 (wxu : t) = lexStrItem002 (wxu : t); 303.84/273.23 lexStrItem00 wv = lexStrItem000 wv; 303.84/273.23 " 303.84/273.23 "lexStrItem000 wv = []; 303.84/273.23 " 303.84/273.23 "lexStrItem001 True (wxu : t) = ([],t) : []; 303.84/273.23 lexStrItem001 wxv wxw = lexStrItem000 wxw; 303.84/273.23 " 303.84/273.23 "lexStrItem002 (wxu : t) = lexStrItem001 (wxu == '\') (wxu : t); 303.84/273.23 lexStrItem002 wxx = lexStrItem000 wxx; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 303.84/273.23 lexExp s = ([],s) : []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexExp (e : s) = lexExp5 (e : s); 303.84/273.23 lexExp s = lexExp3 s; 303.84/273.23 " 303.84/273.23 "lexExp3 s = ([],s) : []; 303.84/273.23 " 303.84/273.23 "lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 303.84/273.23 lexExp4 e s False = lexExp3 (e : s); 303.84/273.23 " 303.84/273.23 "lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 303.84/273.23 lexExp5 wxz = lexExp3 wxz; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 303.84/273.23 lexFracExp s = lexExp s; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexFracExp (wyv : wyy) = lexFracExp5 (wyv : wyy); 303.84/273.23 lexFracExp s = lexFracExp2 s; 303.84/273.23 " 303.84/273.23 "lexFracExp2 s = lexExp s; 303.84/273.23 " 303.84/273.23 "lexFracExp3 wyv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 303.84/273.23 lexFracExp3 wyv c cs False = lexFracExp2 (wyv : c : cs); 303.84/273.23 " 303.84/273.23 "lexFracExp4 True (wyv : c : cs) = lexFracExp3 wyv c cs (isDigit c); 303.84/273.23 lexFracExp4 wyz wzu = lexFracExp2 wzu; 303.84/273.23 " 303.84/273.23 "lexFracExp5 (wyv : wyy) = lexFracExp4 (wyv == '.') (wyv : wyy); 303.84/273.23 lexFracExp5 wzv = lexFracExp2 wzv; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lex [] = ([],[]) : []; 303.84/273.23 lex (c : s)|isSpace clex (dropWhile isSpace s); 303.84/273.23 lex (''' : s) = concatMap lex0 (lexLitChar s); 303.84/273.23 lex ('"' : s) = concatMap lex1 (lexString s) where { 303.84/273.23 lex1 vu55 = lex10 vu55; 303.84/273.23 ; 303.84/273.23 lex10 (str,t) = ('"' : str,t) : []; 303.84/273.23 lex10 ww = []; 303.84/273.23 ; 303.84/273.23 lexStrItem ('\' : '&' : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lexStrItem ('\' : c : s)|isSpace cconcatMap lexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lexStrItem s = lexLitChar s; 303.84/273.23 ; 303.84/273.23 lexStrItem0 vu58 = lexStrItem00 vu58; 303.84/273.23 ; 303.84/273.23 lexStrItem00 ('\' : t) = ([],t) : []; 303.84/273.23 lexStrItem00 wv = []; 303.84/273.23 ; 303.84/273.23 lexString ('"' : s) = ('"' : [],s) : []; 303.84/273.23 lexString s = concatMap lexString1 (lexStrItem s); 303.84/273.23 ; 303.84/273.23 lexString0 ch vu56 = lexString00 ch vu56; 303.84/273.23 ; 303.84/273.23 lexString00 ch (str,u) = (ch ++ str,u) : []; 303.84/273.23 lexString00 ch vz = []; 303.84/273.23 ; 303.84/273.23 lexString1 vu57 = lexString10 vu57; 303.84/273.23 ; 303.84/273.23 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 303.84/273.23 lexString10 wu = []; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 lex (c : s)|isSingle c(c : [],s) : []|isSym cconcatMap (lex2 c) (span isSym s : [])|isAlpha cconcatMap (lex3 c) (span isIdChar s : [])|isDigit cconcatMap (lex5 c) (span isDigit s : [])|otherwise[] where { 303.84/273.23 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 303.84/273.23 ; 303.84/273.23 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 303.84/273.23 ; 303.84/273.23 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 303.84/273.23 ; 303.84/273.23 lex2 c vu59 = lex20 c vu59; 303.84/273.23 ; 303.84/273.23 lex20 c (sym,t) = (c : sym,t) : []; 303.84/273.23 lex20 c xy = []; 303.84/273.23 ; 303.84/273.23 lex3 c vu60 = lex30 c vu60; 303.84/273.23 ; 303.84/273.23 lex30 c (nam,t) = (c : nam,t) : []; 303.84/273.23 lex30 c xz = []; 303.84/273.23 ; 303.84/273.23 lex4 c ds vu61 = lex40 c ds vu61; 303.84/273.23 ; 303.84/273.23 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 303.84/273.23 lex40 c ds xw = []; 303.84/273.23 ; 303.84/273.23 lex5 c vu62 = lex50 c vu62; 303.84/273.23 ; 303.84/273.23 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 303.84/273.23 lex50 c xx = []; 303.84/273.23 ; 303.84/273.23 lexExp (e : s)|e `elem` 'e' : 'E' : []concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 303.84/273.23 lexExp s = ([],s) : []; 303.84/273.23 ; 303.84/273.23 lexExp0 e c vu65 = lexExp00 e c vu65; 303.84/273.23 ; 303.84/273.23 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 303.84/273.23 lexExp00 e c wx = []; 303.84/273.23 ; 303.84/273.23 lexExp1 e vu66 = lexExp10 e vu66; 303.84/273.23 ; 303.84/273.23 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 303.84/273.23 lexExp10 e wz = []; 303.84/273.23 ; 303.84/273.23 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 303.84/273.23 lexExp100 e c t False = []; 303.84/273.23 ; 303.84/273.23 lexExp2 e vu67 = lexExp20 e vu67; 303.84/273.23 ; 303.84/273.23 lexExp20 e (ds,t) = (e : ds,t) : []; 303.84/273.23 lexExp20 e wy = []; 303.84/273.23 ; 303.84/273.23 lexFracExp ('.' : c : cs)|isDigit cconcatMap lexFracExp1 (lexDigits (c : cs)); 303.84/273.23 lexFracExp s = lexExp s; 303.84/273.23 ; 303.84/273.23 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 303.84/273.23 ; 303.84/273.23 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 303.84/273.23 lexFracExp00 ds xv = []; 303.84/273.23 ; 303.84/273.23 lexFracExp1 vu64 = lexFracExp10 vu64; 303.84/273.23 ; 303.84/273.23 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.23 lexFracExp10 xu = []; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex [] = lex19 []; 303.84/273.23 lex (c : s) = lex18 (c : s); 303.84/273.23 lex (xux : s) = lex16 (xux : s); 303.84/273.23 lex (wzy : s) = lex14 (wzy : s); 303.84/273.23 lex (c : s) = lex12 (c : s); 303.84/273.23 " 303.84/273.23 "lex12 (c : s) = lex11 c s (isSingle c) where { 303.84/273.23 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 303.84/273.23 ; 303.84/273.23 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 303.84/273.23 ; 303.84/273.23 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 303.84/273.23 ; 303.84/273.23 lex11 c s True = (c : [],s) : []; 303.84/273.23 lex11 c s False = lex9 c s (isSym c); 303.84/273.23 ; 303.84/273.23 lex2 c vu59 = lex20 c vu59; 303.84/273.23 ; 303.84/273.23 lex20 c (sym,t) = (c : sym,t) : []; 303.84/273.23 lex20 c xy = []; 303.84/273.23 ; 303.84/273.23 lex3 c vu60 = lex30 c vu60; 303.84/273.23 ; 303.84/273.23 lex30 c (nam,t) = (c : nam,t) : []; 303.84/273.23 lex30 c xz = []; 303.84/273.23 ; 303.84/273.23 lex4 c ds vu61 = lex40 c ds vu61; 303.84/273.23 ; 303.84/273.23 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 303.84/273.23 lex40 c ds xw = []; 303.84/273.23 ; 303.84/273.23 lex5 c vu62 = lex50 c vu62; 303.84/273.23 ; 303.84/273.23 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 303.84/273.23 lex50 c xx = []; 303.84/273.23 ; 303.84/273.23 lex6 c s True = []; 303.84/273.23 ; 303.84/273.23 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 303.84/273.23 lex7 c s False = lex6 c s otherwise; 303.84/273.23 ; 303.84/273.23 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 303.84/273.23 lex8 c s False = lex7 c s (isDigit c); 303.84/273.23 ; 303.84/273.23 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 303.84/273.23 lex9 c s False = lex8 c s (isAlpha c); 303.84/273.23 ; 303.84/273.23 lexExp (e : s) = lexExp5 (e : s); 303.84/273.23 lexExp s = lexExp3 s; 303.84/273.23 ; 303.84/273.23 lexExp0 e c vu65 = lexExp00 e c vu65; 303.84/273.23 ; 303.84/273.23 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 303.84/273.23 lexExp00 e c wx = []; 303.84/273.23 ; 303.84/273.23 lexExp1 e vu66 = lexExp10 e vu66; 303.84/273.23 ; 303.84/273.23 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 303.84/273.23 lexExp10 e wz = []; 303.84/273.23 ; 303.84/273.23 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 303.84/273.23 lexExp100 e c t False = []; 303.84/273.23 ; 303.84/273.23 lexExp2 e vu67 = lexExp20 e vu67; 303.84/273.23 ; 303.84/273.23 lexExp20 e (ds,t) = (e : ds,t) : []; 303.84/273.23 lexExp20 e wy = []; 303.84/273.23 ; 303.84/273.23 lexExp3 s = ([],s) : []; 303.84/273.23 ; 303.84/273.23 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 303.84/273.23 lexExp4 e s False = lexExp3 (e : s); 303.84/273.23 ; 303.84/273.23 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 303.84/273.23 lexExp5 wxz = lexExp3 wxz; 303.84/273.23 ; 303.84/273.23 lexFracExp (wyv : wyy) = lexFracExp5 (wyv : wyy); 303.84/273.23 lexFracExp s = lexFracExp2 s; 303.84/273.23 ; 303.84/273.23 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 303.84/273.23 ; 303.84/273.23 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 303.84/273.23 lexFracExp00 ds xv = []; 303.84/273.23 ; 303.84/273.23 lexFracExp1 vu64 = lexFracExp10 vu64; 303.84/273.23 ; 303.84/273.23 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.23 lexFracExp10 xu = []; 303.84/273.23 ; 303.84/273.23 lexFracExp2 s = lexExp s; 303.84/273.23 ; 303.84/273.23 lexFracExp3 wyv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 303.84/273.23 lexFracExp3 wyv c cs False = lexFracExp2 (wyv : c : cs); 303.84/273.23 ; 303.84/273.23 lexFracExp4 True (wyv : c : cs) = lexFracExp3 wyv c cs (isDigit c); 303.84/273.23 lexFracExp4 wyz wzu = lexFracExp2 wzu; 303.84/273.23 ; 303.84/273.23 lexFracExp5 (wyv : wyy) = lexFracExp4 (wyv == '.') (wyv : wyy); 303.84/273.23 lexFracExp5 wzv = lexFracExp2 wzv; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 "lex13 True (wzy : s) = concatMap lex1 (lexString s) where { 303.84/273.23 lex1 vu55 = lex10 vu55; 303.84/273.23 ; 303.84/273.23 lex10 (str,t) = ('"' : str,t) : []; 303.84/273.23 lex10 ww = []; 303.84/273.23 ; 303.84/273.23 lexStrItem (wvv : wvz) = lexStrItem7 (wvv : wvz); 303.84/273.23 lexStrItem (vzz : wuw) = lexStrItem4 (vzz : wuw); 303.84/273.23 lexStrItem s = lexStrItem1 s; 303.84/273.23 ; 303.84/273.23 lexStrItem0 vu58 = lexStrItem00 vu58; 303.84/273.23 ; 303.84/273.23 lexStrItem00 (wxu : t) = lexStrItem002 (wxu : t); 303.84/273.23 lexStrItem00 wv = lexStrItem000 wv; 303.84/273.23 ; 303.84/273.23 lexStrItem000 wv = []; 303.84/273.23 ; 303.84/273.23 lexStrItem001 True (wxu : t) = ([],t) : []; 303.84/273.23 lexStrItem001 wxv wxw = lexStrItem000 wxw; 303.84/273.23 ; 303.84/273.23 lexStrItem002 (wxu : t) = lexStrItem001 (wxu == '\') (wxu : t); 303.84/273.23 lexStrItem002 wxx = lexStrItem000 wxx; 303.84/273.23 ; 303.84/273.23 lexStrItem1 s = lexLitChar s; 303.84/273.23 ; 303.84/273.23 lexStrItem2 vzz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lexStrItem2 vzz c s False = lexStrItem1 (vzz : c : s); 303.84/273.23 ; 303.84/273.23 lexStrItem3 True (vzz : c : s) = lexStrItem2 vzz c s (isSpace c); 303.84/273.23 lexStrItem3 wux wuy = lexStrItem1 wuy; 303.84/273.23 ; 303.84/273.23 lexStrItem4 (vzz : wuw) = lexStrItem3 (vzz == '\') (vzz : wuw); 303.84/273.23 lexStrItem4 wuz = lexStrItem1 wuz; 303.84/273.23 ; 303.84/273.23 lexStrItem5 True (wvv : wvx : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lexStrItem5 wwu wwv = lexStrItem4 wwv; 303.84/273.23 ; 303.84/273.23 lexStrItem6 True (wvv : wvx : s) = lexStrItem5 (wvx == '&') (wvv : wvx : s); 303.84/273.23 lexStrItem6 www wwx = lexStrItem4 wwx; 303.84/273.23 ; 303.84/273.23 lexStrItem7 (wvv : wvz) = lexStrItem6 (wvv == '\') (wvv : wvz); 303.84/273.23 lexStrItem7 wwy = lexStrItem4 wwy; 303.84/273.23 ; 303.84/273.23 lexString (vzu : s) = lexString4 (vzu : s); 303.84/273.23 lexString s = lexString2 s; 303.84/273.23 ; 303.84/273.23 lexString0 ch vu56 = lexString00 ch vu56; 303.84/273.23 ; 303.84/273.23 lexString00 ch (str,u) = (ch ++ str,u) : []; 303.84/273.23 lexString00 ch vz = []; 303.84/273.23 ; 303.84/273.23 lexString1 vu57 = lexString10 vu57; 303.84/273.23 ; 303.84/273.23 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 303.84/273.23 lexString10 wu = []; 303.84/273.23 ; 303.84/273.23 lexString2 s = concatMap lexString1 (lexStrItem s); 303.84/273.23 ; 303.84/273.23 lexString3 True (vzu : s) = ('"' : [],s) : []; 303.84/273.23 lexString3 vzv vzw = lexString2 vzw; 303.84/273.23 ; 303.84/273.23 lexString4 (vzu : s) = lexString3 (vzu == '"') (vzu : s); 303.84/273.23 lexString4 vzx = lexString2 vzx; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 lex13 wzz xuu = lex12 xuu; 303.84/273.23 " 303.84/273.23 "lex14 (wzy : s) = lex13 (wzy == '"') (wzy : s); 303.84/273.23 lex14 xuv = lex12 xuv; 303.84/273.23 " 303.84/273.23 "lex15 True (xux : s) = concatMap lex0 (lexLitChar s); 303.84/273.23 lex15 xuy xuz = lex14 xuz; 303.84/273.23 " 303.84/273.23 "lex16 (xux : s) = lex15 (xux == ''') (xux : s); 303.84/273.23 lex16 xvu = lex14 xvu; 303.84/273.23 " 303.84/273.23 "lex17 c s True = lex (dropWhile isSpace s); 303.84/273.23 lex17 c s False = lex16 (c : s); 303.84/273.23 " 303.84/273.23 "lex18 (c : s) = lex17 c s (isSpace c); 303.84/273.23 lex18 xvw = lex16 xvw; 303.84/273.23 " 303.84/273.23 "lex19 [] = ([],[]) : []; 303.84/273.23 lex19 xvy = lex18 xvy; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "undefined |Falseundefined; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "undefined = undefined1; 303.84/273.23 " 303.84/273.23 "undefined0 True = undefined; 303.84/273.23 " 303.84/273.23 "undefined1 = undefined0 False; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "dropWhile p [] = []; 303.84/273.23 dropWhile p (yw : yx)|p ywdropWhile p yx|otherwiseyw : yx; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "dropWhile p [] = dropWhile3 p []; 303.84/273.23 dropWhile p (yw : yx) = dropWhile2 p (yw : yx); 303.84/273.23 " 303.84/273.23 "dropWhile0 p yw yx True = yw : yx; 303.84/273.23 " 303.84/273.23 "dropWhile1 p yw yx True = dropWhile p yx; 303.84/273.23 dropWhile1 p yw yx False = dropWhile0 p yw yx otherwise; 303.84/273.23 " 303.84/273.23 "dropWhile2 p (yw : yx) = dropWhile1 p yw yx (p yw); 303.84/273.23 " 303.84/273.23 "dropWhile3 p [] = []; 303.84/273.23 dropWhile3 xwv xww = dropWhile2 xwv xww; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lex00 (ch,''' : t) = lex000 ch t (ch /= ''' : []); 303.84/273.23 lex00 yz = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lex00 (ch,xwz : t) = lex003 (ch,xwz : t); 303.84/273.23 lex00 yz = lex001 yz; 303.84/273.23 " 303.84/273.23 "lex001 yz = []; 303.84/273.23 " 303.84/273.23 "lex002 True (ch,xwz : t) = lex000 ch t (ch /= ''' : []); 303.84/273.23 lex002 xxu xxv = lex001 xxv; 303.84/273.23 " 303.84/273.23 "lex003 (ch,xwz : t) = lex002 (xwz == ''') (ch,xwz : t); 303.84/273.23 lex003 xxw = lex001 xxw; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "span p [] = ([],[]); 303.84/273.23 span p (zu : zv)|p zu(zu : ys,zs)|otherwise([],zu : zv) where { 303.84/273.23 vu43 = span p zv; 303.84/273.23 ; 303.84/273.23 ys = ys0 vu43; 303.84/273.23 ; 303.84/273.23 ys0 (ys,zx) = ys; 303.84/273.23 ; 303.84/273.23 zs = zs0 vu43; 303.84/273.23 ; 303.84/273.23 zs0 (zw,zs) = zs; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "span p [] = span3 p []; 303.84/273.23 span p (zu : zv) = span2 p (zu : zv); 303.84/273.23 " 303.84/273.23 "span2 p (zu : zv) = span1 p zu zv (p zu) where { 303.84/273.23 span0 p zu zv True = ([],zu : zv); 303.84/273.23 ; 303.84/273.23 span1 p zu zv True = (zu : ys,zs); 303.84/273.23 span1 p zu zv False = span0 p zu zv otherwise; 303.84/273.23 ; 303.84/273.23 vu43 = span p zv; 303.84/273.23 ; 303.84/273.23 ys = ys0 vu43; 303.84/273.23 ; 303.84/273.23 ys0 (ys,zx) = ys; 303.84/273.23 ; 303.84/273.23 zs = zs0 vu43; 303.84/273.23 ; 303.84/273.23 zs0 (zw,zs) = zs; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 "span3 p [] = ([],[]); 303.84/273.23 span3 xxz xyu = span2 xxz xyu; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "getChar |terminatorreturn terminator|otherwiseaIOE IOError_EOF; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "getChar = getChar2; 303.84/273.23 " 303.84/273.23 "getChar0 True = aIOE IOError_EOF; 303.84/273.23 " 303.84/273.23 "getChar1 True = return terminator; 303.84/273.23 getChar1 False = getChar0 otherwise; 303.84/273.23 " 303.84/273.23 "getChar2 = getChar1 terminator; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexmatch (x : xs) (y : ys)|x == ylexmatch xs ys; 303.84/273.23 lexmatch xs ys = (xs,ys); 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexmatch (x : xs) (y : ys) = lexmatch2 (x : xs) (y : ys); 303.84/273.23 lexmatch xs ys = lexmatch0 xs ys; 303.84/273.23 " 303.84/273.23 "lexmatch0 xs ys = (xs,ys); 303.84/273.23 " 303.84/273.23 "lexmatch1 x xs y ys True = lexmatch xs ys; 303.84/273.23 lexmatch1 x xs y ys False = lexmatch0 (x : xs) (y : ys); 303.84/273.23 " 303.84/273.23 "lexmatch2 (x : xs) (y : ys) = lexmatch1 x xs y ys (x == y); 303.84/273.23 lexmatch2 xyx xyy = lexmatch0 xyx xyy; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "mandatory20 ('(' : [],s) = concatMap mandatory1 (optional s); 303.84/273.23 mandatory20 vvz = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "mandatory20 (xzv : xzw,s) = mandatory202 (xzv : xzw,s); 303.84/273.23 mandatory20 vvz = mandatory200 vvz; 303.84/273.23 " 303.84/273.23 "mandatory200 vvz = []; 303.84/273.23 " 303.84/273.23 "mandatory201 True (xzv : [],s) = concatMap mandatory1 (optional s); 303.84/273.23 mandatory201 xzx xzy = mandatory200 xzy; 303.84/273.23 " 303.84/273.23 "mandatory202 (xzv : xzw,s) = mandatory201 (xzv == '(') (xzv : xzw,s); 303.84/273.23 mandatory202 xzz = mandatory200 xzz; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "mandatory00 x (')' : [],u) = (x,u) : []; 303.84/273.23 mandatory00 x vwu = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "mandatory00 x (yuw : yux,u) = mandatory002 x (yuw : yux,u); 303.84/273.23 mandatory00 x vwu = mandatory000 x vwu; 303.84/273.23 " 303.84/273.23 "mandatory000 x vwu = []; 303.84/273.23 " 303.84/273.23 "mandatory001 True x (yuw : [],u) = (x,u) : []; 303.84/273.23 mandatory001 yuy yuz yvu = mandatory000 yuz yvu; 303.84/273.23 " 303.84/273.23 "mandatory002 x (yuw : yux,u) = mandatory001 (yuw == ')') x (yuw : yux,u); 303.84/273.23 mandatory002 yvv yvw = mandatory000 yvv yvw; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "read'10 ('-' : [],s) = concatMap read'0 (read'' s); 303.84/273.23 read'10 vwy = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "read'10 (yvz : ywu,s) = read'102 (yvz : ywu,s); 303.84/273.23 read'10 vwy = read'100 vwy; 303.84/273.23 " 303.84/273.23 "read'100 vwy = []; 303.84/273.23 " 303.84/273.23 "read'101 True (yvz : [],s) = concatMap read'0 (read'' s); 303.84/273.23 read'101 ywv yww = read'100 yww; 303.84/273.23 " 303.84/273.23 "read'102 (yvz : ywu,s) = read'101 (yvz == '-') (yvz : ywu,s); 303.84/273.23 read'102 ywx = read'100 ywx; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 303.84/273.23 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 303.84/273.23 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexEsc (vxv : vxw)|isDigit vxvspan isDigit (vxv : vxw) : []|isUpper vxvlexEsc2 (concatMap (lexEsc1 (vxv : vxw)) table); 303.84/273.23 lexEsc vxx = []; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexEsc (c : s) = lexEsc16 (c : s); 303.84/273.23 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 303.84/273.23 lexEsc (yyu : s) = lexEsc11 (yyu : s); 303.84/273.23 lexEsc (yxv : s) = lexEsc8 (yxv : s); 303.84/273.23 lexEsc (vxv : vxw) = lexEsc6 (vxv : vxw); 303.84/273.23 lexEsc vxx = lexEsc3 vxx; 303.84/273.23 " 303.84/273.23 "lexEsc3 vxx = []; 303.84/273.23 " 303.84/273.23 "lexEsc4 vxv vxw True = lexEsc2 (concatMap (lexEsc1 (vxv : vxw)) table); 303.84/273.23 lexEsc4 vxv vxw False = lexEsc3 (vxv : vxw); 303.84/273.23 " 303.84/273.23 "lexEsc5 vxv vxw True = span isDigit (vxv : vxw) : []; 303.84/273.23 lexEsc5 vxv vxw False = lexEsc4 vxv vxw (isUpper vxv); 303.84/273.23 " 303.84/273.23 "lexEsc6 (vxv : vxw) = lexEsc5 vxv vxw (isDigit vxv); 303.84/273.23 lexEsc6 ywz = lexEsc3 ywz; 303.84/273.23 " 303.84/273.23 "lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexEsc7 yxw yxx = lexEsc6 yxx; 303.84/273.23 " 303.84/273.23 "lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 303.84/273.23 lexEsc8 yxy = lexEsc6 yxy; 303.84/273.23 " 303.84/273.23 "lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexEsc9 yyv yyw = lexEsc8 yyw; 303.84/273.23 " 303.84/273.23 "lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 303.84/273.23 lexEsc11 yyx = lexEsc8 yyx; 303.84/273.23 " 303.84/273.23 "lexEsc12 yyz c s True = ('^' : c : [],s) : []; 303.84/273.23 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 303.84/273.23 " 303.84/273.23 "lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 303.84/273.23 lexEsc13 yzx yzy = lexEsc11 yzy; 303.84/273.23 " 303.84/273.23 "lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 303.84/273.23 lexEsc14 yzz = lexEsc11 yzz; 303.84/273.23 " 303.84/273.23 "lexEsc15 c s True = (c : [],s) : []; 303.84/273.23 lexEsc15 c s False = lexEsc14 (c : s); 303.84/273.23 " 303.84/273.23 "lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 303.84/273.23 lexEsc16 zuv = lexEsc14 zuv; 303.84/273.23 " 303.84/273.23 The following Function with conditions 303.84/273.23 "lexLitChar [] = []; 303.84/273.23 lexLitChar (c : s)|c /= '\'(c : [],s) : []|otherwisemap (prefix '\') (lexEsc s) where { 303.84/273.23 lexEsc (c : s)|c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : [](c : [],s) : []; 303.84/273.23 lexEsc ('^' : c : s)|c >= '@' && c <= '_'('^' : c : [],s) : []; 303.84/273.23 lexEsc ('o' : s) = prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexEsc ('x' : s) = prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexEsc (vxv : vxw)|isDigit vxvspan isDigit (vxv : vxw) : []|isUpper vxvlexEsc2 (concatMap (lexEsc1 (vxv : vxw)) table); 303.84/273.23 lexEsc vxx = []; 303.84/273.23 ; 303.84/273.23 lexEsc0 mne vu69 = lexEsc00 mne vu69; 303.84/273.23 ; 303.84/273.23 lexEsc00 mne ([],s') = (mne,s') : []; 303.84/273.23 lexEsc00 mne vxz = []; 303.84/273.23 ; 303.84/273.23 lexEsc1 s vu70 = lexEsc10 s vu70; 303.84/273.23 ; 303.84/273.23 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 lexEsc10 s vyu = []; 303.84/273.23 ; 303.84/273.23 lexEsc2 (pr : vxy) = pr : []; 303.84/273.23 lexEsc2 [] = []; 303.84/273.23 ; 303.84/273.23 prefix c (t,s) = (c : t,s); 303.84/273.23 ; 303.84/273.23 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 is transformed to 303.84/273.23 "lexLitChar [] = lexLitChar3 []; 303.84/273.23 lexLitChar (c : s) = lexLitChar2 (c : s); 303.84/273.23 " 303.84/273.23 "lexLitChar2 (c : s) = lexLitChar1 c s (c /= '\') where { 303.84/273.23 lexEsc (c : s) = lexEsc16 (c : s); 303.84/273.23 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 303.84/273.23 lexEsc (yyu : s) = lexEsc11 (yyu : s); 303.84/273.23 lexEsc (yxv : s) = lexEsc8 (yxv : s); 303.84/273.23 lexEsc (vxv : vxw) = lexEsc6 (vxv : vxw); 303.84/273.23 lexEsc vxx = lexEsc3 vxx; 303.84/273.23 ; 303.84/273.23 lexEsc0 mne vu69 = lexEsc00 mne vu69; 303.84/273.23 ; 303.84/273.23 lexEsc00 mne ([],s') = (mne,s') : []; 303.84/273.23 lexEsc00 mne vxz = []; 303.84/273.23 ; 303.84/273.23 lexEsc1 s vu70 = lexEsc10 s vu70; 303.84/273.23 ; 303.84/273.23 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 lexEsc10 s vyu = []; 303.84/273.23 ; 303.84/273.23 lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 303.84/273.23 lexEsc11 yyx = lexEsc8 yyx; 303.84/273.23 ; 303.84/273.23 lexEsc12 yyz c s True = ('^' : c : [],s) : []; 303.84/273.23 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 303.84/273.23 ; 303.84/273.23 lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 303.84/273.23 lexEsc13 yzx yzy = lexEsc11 yzy; 303.84/273.23 ; 303.84/273.23 lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 303.84/273.23 lexEsc14 yzz = lexEsc11 yzz; 303.84/273.23 ; 303.84/273.23 lexEsc15 c s True = (c : [],s) : []; 303.84/273.23 lexEsc15 c s False = lexEsc14 (c : s); 303.84/273.23 ; 303.84/273.23 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 303.84/273.23 lexEsc16 zuv = lexEsc14 zuv; 303.84/273.23 ; 303.84/273.23 lexEsc2 (pr : vxy) = pr : []; 303.84/273.23 lexEsc2 [] = []; 303.84/273.23 ; 303.84/273.23 lexEsc3 vxx = []; 303.84/273.23 ; 303.84/273.23 lexEsc4 vxv vxw True = lexEsc2 (concatMap (lexEsc1 (vxv : vxw)) table); 303.84/273.23 lexEsc4 vxv vxw False = lexEsc3 (vxv : vxw); 303.84/273.23 ; 303.84/273.23 lexEsc5 vxv vxw True = span isDigit (vxv : vxw) : []; 303.84/273.23 lexEsc5 vxv vxw False = lexEsc4 vxv vxw (isUpper vxv); 303.84/273.23 ; 303.84/273.23 lexEsc6 (vxv : vxw) = lexEsc5 vxv vxw (isDigit vxv); 303.84/273.23 lexEsc6 ywz = lexEsc3 ywz; 303.84/273.23 ; 303.84/273.23 lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexEsc7 yxw yxx = lexEsc6 yxx; 303.84/273.23 ; 303.84/273.23 lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 303.84/273.23 lexEsc8 yxy = lexEsc6 yxy; 303.84/273.23 ; 303.84/273.23 lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexEsc9 yyv yyw = lexEsc8 yyw; 303.84/273.23 ; 303.84/273.23 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 303.84/273.23 ; 303.84/273.23 lexLitChar1 c s True = (c : [],s) : []; 303.84/273.23 lexLitChar1 c s False = lexLitChar0 c s otherwise; 303.84/273.23 ; 303.84/273.23 prefix c (t,s) = (c : t,s); 303.84/273.23 ; 303.84/273.23 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 303.84/273.23 } 303.84/273.23 ; 303.84/273.23 " 303.84/273.23 "lexLitChar3 [] = []; 303.84/273.23 lexLitChar3 zuy = lexLitChar2 zuy; 303.84/273.23 " 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (10) 303.84/273.23 Obligation: 303.84/273.23 mainModule Main 303.84/273.23 module Main where { 303.84/273.23 import qualified Prelude; 303.84/273.23 } 303.84/273.23 303.84/273.23 ---------------------------------------- 303.84/273.23 303.84/273.23 (11) LetRed (EQUIVALENT) 303.84/273.23 Let/Where Reductions: 303.84/273.23 The bindings of the following Let/Where expression 303.84/273.23 "lexLitChar1 c s (c /= '\') where { 303.84/273.23 lexEsc (c : s) = lexEsc16 (c : s); 303.84/273.23 lexEsc (yyz : yzw) = lexEsc14 (yyz : yzw); 303.84/273.23 lexEsc (yyu : s) = lexEsc11 (yyu : s); 303.84/273.23 lexEsc (yxv : s) = lexEsc8 (yxv : s); 303.84/273.23 lexEsc (vxv : vxw) = lexEsc6 (vxv : vxw); 303.84/273.23 lexEsc vxx = lexEsc3 vxx; 303.84/273.23 ; 303.84/273.23 lexEsc0 mne vu69 = lexEsc00 mne vu69; 303.84/273.23 ; 303.84/273.23 lexEsc00 mne ([],s') = (mne,s') : []; 303.84/273.23 lexEsc00 mne vxz = []; 303.84/273.23 ; 303.84/273.23 lexEsc1 s vu70 = lexEsc10 s vu70; 303.84/273.23 ; 303.84/273.23 lexEsc10 s (c,mne) = concatMap (lexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 lexEsc10 s vyu = []; 303.84/273.23 ; 303.84/273.23 lexEsc11 (yyu : s) = lexEsc9 (yyu == 'o') (yyu : s); 303.84/273.23 lexEsc11 yyx = lexEsc8 yyx; 303.84/273.23 ; 303.84/273.23 lexEsc12 yyz c s True = ('^' : c : [],s) : []; 303.84/273.23 lexEsc12 yyz c s False = lexEsc11 (yyz : c : s); 303.84/273.23 ; 303.84/273.23 lexEsc13 True (yyz : c : s) = lexEsc12 yyz c s (c >= '@' && c <= '_'); 303.84/273.23 lexEsc13 yzx yzy = lexEsc11 yzy; 303.84/273.23 ; 303.84/273.23 lexEsc14 (yyz : yzw) = lexEsc13 (yyz == '^') (yyz : yzw); 303.84/273.23 lexEsc14 yzz = lexEsc11 yzz; 303.84/273.23 ; 303.84/273.23 lexEsc15 c s True = (c : [],s) : []; 303.84/273.23 lexEsc15 c s False = lexEsc14 (c : s); 303.84/273.23 ; 303.84/273.23 lexEsc16 (c : s) = lexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 303.84/273.23 lexEsc16 zuv = lexEsc14 zuv; 303.84/273.23 ; 303.84/273.23 lexEsc2 (pr : vxy) = pr : []; 303.84/273.23 lexEsc2 [] = []; 303.84/273.23 ; 303.84/273.23 lexEsc3 vxx = []; 303.84/273.23 ; 303.84/273.23 lexEsc4 vxv vxw True = lexEsc2 (concatMap (lexEsc1 (vxv : vxw)) table); 303.84/273.23 lexEsc4 vxv vxw False = lexEsc3 (vxv : vxw); 303.84/273.23 ; 303.84/273.23 lexEsc5 vxv vxw True = span isDigit (vxv : vxw) : []; 303.84/273.23 lexEsc5 vxv vxw False = lexEsc4 vxv vxw (isUpper vxv); 303.84/273.23 ; 303.84/273.23 lexEsc6 (vxv : vxw) = lexEsc5 vxv vxw (isDigit vxv); 303.84/273.23 lexEsc6 ywz = lexEsc3 ywz; 303.84/273.23 ; 303.84/273.23 lexEsc7 True (yxv : s) = prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexEsc7 yxw yxx = lexEsc6 yxx; 303.84/273.23 ; 303.84/273.23 lexEsc8 (yxv : s) = lexEsc7 (yxv == 'x') (yxv : s); 303.84/273.23 lexEsc8 yxy = lexEsc6 yxy; 303.84/273.23 ; 303.84/273.23 lexEsc9 True (yyu : s) = prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexEsc9 yyv yyw = lexEsc8 yyw; 303.84/273.23 ; 303.84/273.23 lexLitChar0 c s True = map (prefix '\') (lexEsc s); 303.84/273.23 ; 303.84/273.23 lexLitChar1 c s True = (c : [],s) : []; 303.84/273.23 lexLitChar1 c s False = lexLitChar0 c s otherwise; 303.84/273.23 ; 303.84/273.23 prefix c (t,s) = (c : t,s); 303.84/273.23 ; 303.84/273.23 table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 303.84/273.23 } 303.84/273.23 " 303.84/273.23 are unpacked to the following functions on top level 303.84/273.23 "lexLitChar2LexEsc00 mne ([],s') = (mne,s') : []; 303.84/273.23 lexLitChar2LexEsc00 mne vxz = []; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc4 vxv vxw True = lexLitChar2LexEsc2 (concatMap (lexLitChar2LexEsc1 (vxv : vxw)) lexLitChar2Table); 303.84/273.23 lexLitChar2LexEsc4 vxv vxw False = lexLitChar2LexEsc3 (vxv : vxw); 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc0 mne vu69 = lexLitChar2LexEsc00 mne vu69; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc9 True (yyu : s) = lexLitChar2Prefix 'o' (span isOctDigit s) : []; 303.84/273.23 lexLitChar2LexEsc9 yyv yyw = lexLitChar2LexEsc8 yyw; 303.84/273.23 " 303.84/273.23 "lexLitChar2Table = ('\127','D' : 'E' : 'L' : []) : asciiTab; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc (c : s) = lexLitChar2LexEsc16 (c : s); 303.84/273.23 lexLitChar2LexEsc (yyz : yzw) = lexLitChar2LexEsc14 (yyz : yzw); 303.84/273.23 lexLitChar2LexEsc (yyu : s) = lexLitChar2LexEsc11 (yyu : s); 303.84/273.23 lexLitChar2LexEsc (yxv : s) = lexLitChar2LexEsc8 (yxv : s); 303.84/273.23 lexLitChar2LexEsc (vxv : vxw) = lexLitChar2LexEsc6 (vxv : vxw); 303.84/273.23 lexLitChar2LexEsc vxx = lexLitChar2LexEsc3 vxx; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc2 (pr : vxy) = pr : []; 303.84/273.23 lexLitChar2LexEsc2 [] = []; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc12 yyz c s True = ('^' : c : [],s) : []; 303.84/273.23 lexLitChar2LexEsc12 yyz c s False = lexLitChar2LexEsc11 (yyz : c : s); 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc14 (yyz : yzw) = lexLitChar2LexEsc13 (yyz == '^') (yyz : yzw); 303.84/273.23 lexLitChar2LexEsc14 yzz = lexLitChar2LexEsc11 yzz; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc5 vxv vxw True = span isDigit (vxv : vxw) : []; 303.84/273.23 lexLitChar2LexEsc5 vxv vxw False = lexLitChar2LexEsc4 vxv vxw (isUpper vxv); 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc3 vxx = []; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexLitChar1 c s True = (c : [],s) : []; 303.84/273.23 lexLitChar2LexLitChar1 c s False = lexLitChar2LexLitChar0 c s otherwise; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc8 (yxv : s) = lexLitChar2LexEsc7 (yxv == 'x') (yxv : s); 303.84/273.23 lexLitChar2LexEsc8 yxy = lexLitChar2LexEsc6 yxy; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc7 True (yxv : s) = lexLitChar2Prefix 'x' (span isHexDigit s) : []; 303.84/273.23 lexLitChar2LexEsc7 yxw yxx = lexLitChar2LexEsc6 yxx; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc16 (c : s) = lexLitChar2LexEsc15 c s (c `elem` 'a' : 'b' : 'f' : 'n' : 'r' : 't' : 'v' : '\' : '"' : ''' : []); 303.84/273.23 lexLitChar2LexEsc16 zuv = lexLitChar2LexEsc14 zuv; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc6 (vxv : vxw) = lexLitChar2LexEsc5 vxv vxw (isDigit vxv); 303.84/273.23 lexLitChar2LexEsc6 ywz = lexLitChar2LexEsc3 ywz; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc15 c s True = (c : [],s) : []; 303.84/273.23 lexLitChar2LexEsc15 c s False = lexLitChar2LexEsc14 (c : s); 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc1 s vu70 = lexLitChar2LexEsc10 s vu70; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc11 (yyu : s) = lexLitChar2LexEsc9 (yyu == 'o') (yyu : s); 303.84/273.23 lexLitChar2LexEsc11 yyx = lexLitChar2LexEsc8 yyx; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc10 s (c,mne) = concatMap (lexLitChar2LexEsc0 mne) (lexmatch mne s : []); 303.84/273.23 lexLitChar2LexEsc10 s vyu = []; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexEsc13 True (yyz : c : s) = lexLitChar2LexEsc12 yyz c s (c >= '@' && c <= '_'); 303.84/273.23 lexLitChar2LexEsc13 yzx yzy = lexLitChar2LexEsc11 yzy; 303.84/273.23 " 303.84/273.23 "lexLitChar2LexLitChar0 c s True = map (lexLitChar2Prefix '\') (lexLitChar2LexEsc s); 303.84/273.23 " 303.84/273.23 "lexLitChar2Prefix c (t,s) = (c : t,s); 303.84/273.23 " 303.84/273.23 The bindings of the following Let/Where expression 303.84/273.23 "concatMap lex1 (lexString s) where { 303.84/273.23 lex1 vu55 = lex10 vu55; 303.84/273.23 ; 303.84/273.23 lex10 (str,t) = ('"' : str,t) : []; 303.84/273.23 lex10 ww = []; 303.84/273.23 ; 303.84/273.23 lexStrItem (wvv : wvz) = lexStrItem7 (wvv : wvz); 303.84/273.23 lexStrItem (vzz : wuw) = lexStrItem4 (vzz : wuw); 303.84/273.23 lexStrItem s = lexStrItem1 s; 303.84/273.23 ; 303.84/273.23 lexStrItem0 vu58 = lexStrItem00 vu58; 303.84/273.23 ; 303.84/273.23 lexStrItem00 (wxu : t) = lexStrItem002 (wxu : t); 303.84/273.23 lexStrItem00 wv = lexStrItem000 wv; 303.84/273.23 ; 303.84/273.23 lexStrItem000 wv = []; 303.84/273.23 ; 303.84/273.23 lexStrItem001 True (wxu : t) = ([],t) : []; 303.84/273.23 lexStrItem001 wxv wxw = lexStrItem000 wxw; 303.84/273.23 ; 303.84/273.23 lexStrItem002 (wxu : t) = lexStrItem001 (wxu == '\') (wxu : t); 303.84/273.23 lexStrItem002 wxx = lexStrItem000 wxx; 303.84/273.23 ; 303.84/273.23 lexStrItem1 s = lexLitChar s; 303.84/273.23 ; 303.84/273.23 lexStrItem2 vzz c s True = concatMap lexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lexStrItem2 vzz c s False = lexStrItem1 (vzz : c : s); 303.84/273.23 ; 303.84/273.23 lexStrItem3 True (vzz : c : s) = lexStrItem2 vzz c s (isSpace c); 303.84/273.23 lexStrItem3 wux wuy = lexStrItem1 wuy; 303.84/273.23 ; 303.84/273.23 lexStrItem4 (vzz : wuw) = lexStrItem3 (vzz == '\') (vzz : wuw); 303.84/273.23 lexStrItem4 wuz = lexStrItem1 wuz; 303.84/273.23 ; 303.84/273.23 lexStrItem5 True (wvv : wvx : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lexStrItem5 wwu wwv = lexStrItem4 wwv; 303.84/273.23 ; 303.84/273.23 lexStrItem6 True (wvv : wvx : s) = lexStrItem5 (wvx == '&') (wvv : wvx : s); 303.84/273.23 lexStrItem6 www wwx = lexStrItem4 wwx; 303.84/273.23 ; 303.84/273.23 lexStrItem7 (wvv : wvz) = lexStrItem6 (wvv == '\') (wvv : wvz); 303.84/273.23 lexStrItem7 wwy = lexStrItem4 wwy; 303.84/273.23 ; 303.84/273.23 lexString (vzu : s) = lexString4 (vzu : s); 303.84/273.23 lexString s = lexString2 s; 303.84/273.23 ; 303.84/273.23 lexString0 ch vu56 = lexString00 ch vu56; 303.84/273.23 ; 303.84/273.23 lexString00 ch (str,u) = (ch ++ str,u) : []; 303.84/273.23 lexString00 ch vz = []; 303.84/273.23 ; 303.84/273.23 lexString1 vu57 = lexString10 vu57; 303.84/273.23 ; 303.84/273.23 lexString10 (ch,t) = concatMap (lexString0 ch) (lexString t); 303.84/273.23 lexString10 wu = []; 303.84/273.23 ; 303.84/273.23 lexString2 s = concatMap lexString1 (lexStrItem s); 303.84/273.23 ; 303.84/273.23 lexString3 True (vzu : s) = ('"' : [],s) : []; 303.84/273.23 lexString3 vzv vzw = lexString2 vzw; 303.84/273.23 ; 303.84/273.23 lexString4 (vzu : s) = lexString3 (vzu == '"') (vzu : s); 303.84/273.23 lexString4 vzx = lexString2 vzx; 303.84/273.23 } 303.84/273.23 " 303.84/273.23 are unpacked to the following functions on top level 303.84/273.23 "lex13LexStrItem3 True (vzz : c : s) = lex13LexStrItem2 vzz c s (isSpace c); 303.84/273.23 lex13LexStrItem3 wux wuy = lex13LexStrItem1 wuy; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem002 (wxu : t) = lex13LexStrItem001 (wxu == '\') (wxu : t); 303.84/273.23 lex13LexStrItem002 wxx = lex13LexStrItem000 wxx; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem4 (vzz : wuw) = lex13LexStrItem3 (vzz == '\') (vzz : wuw); 303.84/273.23 lex13LexStrItem4 wuz = lex13LexStrItem1 wuz; 303.84/273.23 " 303.84/273.23 "lex13Lex10 (str,t) = ('"' : str,t) : []; 303.84/273.23 lex13Lex10 ww = []; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem0 vu58 = lex13LexStrItem00 vu58; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem2 vzz c s True = concatMap lex13LexStrItem0 (dropWhile isSpace s : []); 303.84/273.23 lex13LexStrItem2 vzz c s False = lex13LexStrItem1 (vzz : c : s); 303.84/273.23 " 303.84/273.23 "lex13LexString4 (vzu : s) = lex13LexString3 (vzu == '"') (vzu : s); 303.84/273.23 lex13LexString4 vzx = lex13LexString2 vzx; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem000 wv = []; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem001 True (wxu : t) = ([],t) : []; 303.84/273.23 lex13LexStrItem001 wxv wxw = lex13LexStrItem000 wxw; 303.84/273.23 " 303.84/273.23 "lex13LexString0 ch vu56 = lex13LexString00 ch vu56; 303.84/273.23 " 303.84/273.23 "lex13LexString2 s = concatMap lex13LexString1 (lex13LexStrItem s); 303.84/273.23 " 303.84/273.23 "lex13LexStrItem6 True (wvv : wvx : s) = lex13LexStrItem5 (wvx == '&') (wvv : wvx : s); 303.84/273.23 lex13LexStrItem6 www wwx = lex13LexStrItem4 wwx; 303.84/273.23 " 303.84/273.23 "lex13LexString (vzu : s) = lex13LexString4 (vzu : s); 303.84/273.23 lex13LexString s = lex13LexString2 s; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem1 s = lexLitChar s; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem5 True (wvv : wvx : s) = ('\' : '&' : [],s) : []; 303.84/273.23 lex13LexStrItem5 wwu wwv = lex13LexStrItem4 wwv; 303.84/273.23 " 303.84/273.23 "lex13LexString1 vu57 = lex13LexString10 vu57; 303.84/273.23 " 303.84/273.23 "lex13Lex1 vu55 = lex13Lex10 vu55; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem00 (wxu : t) = lex13LexStrItem002 (wxu : t); 303.84/273.23 lex13LexStrItem00 wv = lex13LexStrItem000 wv; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem7 (wvv : wvz) = lex13LexStrItem6 (wvv == '\') (wvv : wvz); 303.84/273.23 lex13LexStrItem7 wwy = lex13LexStrItem4 wwy; 303.84/273.23 " 303.84/273.23 "lex13LexString3 True (vzu : s) = ('"' : [],s) : []; 303.84/273.23 lex13LexString3 vzv vzw = lex13LexString2 vzw; 303.84/273.23 " 303.84/273.23 "lex13LexString10 (ch,t) = concatMap (lex13LexString0 ch) (lex13LexString t); 303.84/273.23 lex13LexString10 wu = []; 303.84/273.23 " 303.84/273.23 "lex13LexString00 ch (str,u) = (ch ++ str,u) : []; 303.84/273.23 lex13LexString00 ch vz = []; 303.84/273.23 " 303.84/273.23 "lex13LexStrItem (wvv : wvz) = lex13LexStrItem7 (wvv : wvz); 303.84/273.23 lex13LexStrItem (vzz : wuw) = lex13LexStrItem4 (vzz : wuw); 303.84/273.23 lex13LexStrItem s = lex13LexStrItem1 s; 303.84/273.23 " 303.84/273.23 The bindings of the following Let/Where expression 303.84/273.23 "span1 p zu zv (p zu) where { 303.84/273.23 span0 p zu zv True = ([],zu : zv); 303.84/273.23 ; 303.84/273.23 span1 p zu zv True = (zu : ys,zs); 303.84/273.23 span1 p zu zv False = span0 p zu zv otherwise; 303.84/273.23 ; 303.84/273.23 vu43 = span p zv; 303.84/273.23 ; 303.84/273.23 ys = ys0 vu43; 303.84/273.23 ; 303.84/273.23 ys0 (ys,zx) = ys; 303.84/273.23 ; 303.84/273.23 zs = zs0 vu43; 303.84/273.23 ; 303.84/273.23 zs0 (zw,zs) = zs; 303.84/273.23 } 303.84/273.23 " 303.84/273.23 are unpacked to the following functions on top level 303.84/273.23 "span2Vu43 zuz zvu = span zuz zvu; 303.84/273.23 " 303.84/273.23 "span2Span0 zuz zvu p zu zv True = ([],zu : zv); 303.84/273.23 " 303.84/273.23 "span2Zs0 zuz zvu (zw,zs) = zs; 303.84/273.23 " 303.84/273.23 "span2Ys0 zuz zvu (ys,zx) = ys; 303.84/273.23 " 303.84/273.23 "span2Zs zuz zvu = span2Zs0 zuz zvu (span2Vu43 zuz zvu); 303.84/273.23 " 303.84/273.23 "span2Ys zuz zvu = span2Ys0 zuz zvu (span2Vu43 zuz zvu); 303.84/273.23 " 303.84/273.23 "span2Span1 zuz zvu p zu zv True = (zu : span2Ys zuz zvu,span2Zs zuz zvu); 303.84/273.23 span2Span1 zuz zvu p zu zv False = span2Span0 zuz zvu p zu zv otherwise; 303.84/273.23 " 303.84/273.23 The bindings of the following Let/Where expression 303.84/273.23 "lex11 c s (isSingle c) where { 303.84/273.23 isIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 303.84/273.23 ; 303.84/273.23 isSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 303.84/273.23 ; 303.84/273.23 isSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 303.84/273.23 ; 303.84/273.23 lex11 c s True = (c : [],s) : []; 303.84/273.23 lex11 c s False = lex9 c s (isSym c); 303.84/273.23 ; 303.84/273.23 lex2 c vu59 = lex20 c vu59; 303.84/273.23 ; 303.84/273.23 lex20 c (sym,t) = (c : sym,t) : []; 303.84/273.23 lex20 c xy = []; 303.84/273.23 ; 303.84/273.23 lex3 c vu60 = lex30 c vu60; 303.84/273.23 ; 303.84/273.23 lex30 c (nam,t) = (c : nam,t) : []; 303.84/273.23 lex30 c xz = []; 303.84/273.23 ; 303.84/273.23 lex4 c ds vu61 = lex40 c ds vu61; 303.84/273.23 ; 303.84/273.23 lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 303.84/273.23 lex40 c ds xw = []; 303.84/273.23 ; 303.84/273.23 lex5 c vu62 = lex50 c vu62; 303.84/273.23 ; 303.84/273.23 lex50 c (ds,s) = concatMap (lex4 c ds) (lexFracExp s); 303.84/273.23 lex50 c xx = []; 303.84/273.23 ; 303.84/273.23 lex6 c s True = []; 303.84/273.23 ; 303.84/273.23 lex7 c s True = concatMap (lex5 c) (span isDigit s : []); 303.84/273.23 lex7 c s False = lex6 c s otherwise; 303.84/273.23 ; 303.84/273.23 lex8 c s True = concatMap (lex3 c) (span isIdChar s : []); 303.84/273.23 lex8 c s False = lex7 c s (isDigit c); 303.84/273.23 ; 303.84/273.23 lex9 c s True = concatMap (lex2 c) (span isSym s : []); 303.84/273.23 lex9 c s False = lex8 c s (isAlpha c); 303.84/273.23 ; 303.84/273.23 lexExp (e : s) = lexExp5 (e : s); 303.84/273.23 lexExp s = lexExp3 s; 303.84/273.23 ; 303.84/273.23 lexExp0 e c vu65 = lexExp00 e c vu65; 303.84/273.23 ; 303.84/273.23 lexExp00 e c (ds,u) = (e : c : ds,u) : []; 303.84/273.23 lexExp00 e c wx = []; 303.84/273.23 ; 303.84/273.23 lexExp1 e vu66 = lexExp10 e vu66; 303.84/273.23 ; 303.84/273.23 lexExp10 e (c : t) = lexExp100 e c t (c `elem` '+' : '-' : []); 303.84/273.23 lexExp10 e wz = []; 303.84/273.23 ; 303.84/273.23 lexExp100 e c t True = concatMap (lexExp0 e c) (lexDigits t); 303.84/273.23 lexExp100 e c t False = []; 303.84/273.23 ; 303.84/273.23 lexExp2 e vu67 = lexExp20 e vu67; 303.84/273.23 ; 303.84/273.23 lexExp20 e (ds,t) = (e : ds,t) : []; 303.84/273.23 lexExp20 e wy = []; 303.84/273.23 ; 303.84/273.23 lexExp3 s = ([],s) : []; 303.84/273.23 ; 303.84/273.23 lexExp4 e s True = concatMap (lexExp1 e) (s : []) ++ concatMap (lexExp2 e) (lexDigits s); 303.84/273.23 lexExp4 e s False = lexExp3 (e : s); 303.84/273.23 ; 303.84/273.23 lexExp5 (e : s) = lexExp4 e s (e `elem` 'e' : 'E' : []); 303.84/273.23 lexExp5 wxz = lexExp3 wxz; 303.84/273.23 ; 303.84/273.23 lexFracExp (wyv : wyy) = lexFracExp5 (wyv : wyy); 303.84/273.23 lexFracExp s = lexFracExp2 s; 303.84/273.23 ; 303.84/273.23 lexFracExp0 ds vu63 = lexFracExp00 ds vu63; 303.84/273.23 ; 303.84/273.23 lexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 303.84/273.23 lexFracExp00 ds xv = []; 303.84/273.23 ; 303.84/273.23 lexFracExp1 vu64 = lexFracExp10 vu64; 303.84/273.23 ; 303.84/273.23 lexFracExp10 (ds,t) = concatMap (lexFracExp0 ds) (lexExp t); 303.84/273.23 lexFracExp10 xu = []; 303.84/273.23 ; 303.84/273.23 lexFracExp2 s = lexExp s; 303.84/273.23 ; 303.84/273.23 lexFracExp3 wyv c cs True = concatMap lexFracExp1 (lexDigits (c : cs)); 303.84/273.23 lexFracExp3 wyv c cs False = lexFracExp2 (wyv : c : cs); 303.84/273.23 ; 303.84/273.23 lexFracExp4 True (wyv : c : cs) = lexFracExp3 wyv c cs (isDigit c); 303.84/273.23 lexFracExp4 wyz wzu = lexFracExp2 wzu; 303.84/273.23 ; 303.84/273.23 lexFracExp5 (wyv : wyy) = lexFracExp4 (wyv == '.') (wyv : wyy); 303.84/273.23 lexFracExp5 wzv = lexFracExp2 wzv; 303.84/273.23 } 303.84/273.23 " 303.84/273.23 are unpacked to the following functions on top level 303.84/273.23 "lex12Lex8 c s True = concatMap (lex12Lex3 c) (span lex12IsIdChar s : []); 303.84/273.23 lex12Lex8 c s False = lex12Lex7 c s (isDigit c); 303.84/273.23 " 303.84/273.23 "lex12LexExp3 s = ([],s) : []; 303.84/273.23 " 303.84/273.23 "lex12LexFracExp2 s = lex12LexExp s; 303.84/273.23 " 303.84/273.23 "lex12LexFracExp10 (ds,t) = concatMap (lex12LexFracExp0 ds) (lex12LexExp t); 303.84/273.23 lex12LexFracExp10 xu = []; 303.84/273.23 " 303.84/273.23 "lex12LexFracExp5 (wyv : wyy) = lex12LexFracExp4 (wyv == '.') (wyv : wyy); 304.00/273.28 lex12LexFracExp5 wzv = lex12LexFracExp2 wzv; 304.00/273.28 " 304.00/273.28 "lex12Lex20 c (sym,t) = (c : sym,t) : []; 304.00/273.28 lex12Lex20 c xy = []; 304.00/273.28 " 304.00/273.28 "lex12IsIdChar c = isAlphaNum c || c `elem` '_' : ''' : []; 304.00/273.28 " 304.00/273.28 "lex12LexExp (e : s) = lex12LexExp5 (e : s); 304.00/273.28 lex12LexExp s = lex12LexExp3 s; 304.00/273.28 " 304.00/273.28 "lex12Lex30 c (nam,t) = (c : nam,t) : []; 304.00/273.28 lex12Lex30 c xz = []; 304.00/273.28 " 304.00/273.28 "lex12LexExp2 e vu67 = lex12LexExp20 e vu67; 304.00/273.28 " 304.00/273.28 "lex12Lex7 c s True = concatMap (lex12Lex5 c) (span isDigit s : []); 304.00/273.28 lex12Lex7 c s False = lex12Lex6 c s otherwise; 304.00/273.28 " 304.00/273.28 "lex12Lex3 c vu60 = lex12Lex30 c vu60; 304.00/273.28 " 304.00/273.28 "lex12Lex9 c s True = concatMap (lex12Lex2 c) (span lex12IsSym s : []); 304.00/273.28 lex12Lex9 c s False = lex12Lex8 c s (isAlpha c); 304.00/273.28 " 304.00/273.28 "lex12Lex50 c (ds,s) = concatMap (lex12Lex4 c ds) (lex12LexFracExp s); 304.00/273.28 lex12Lex50 c xx = []; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp4 True (wyv : c : cs) = lex12LexFracExp3 wyv c cs (isDigit c); 304.00/273.28 lex12LexFracExp4 wyz wzu = lex12LexFracExp2 wzu; 304.00/273.28 " 304.00/273.28 "lex12LexExp1 e vu66 = lex12LexExp10 e vu66; 304.00/273.28 " 304.00/273.28 "lex12LexExp100 e c t True = concatMap (lex12LexExp0 e c) (lexDigits t); 304.00/273.28 lex12LexExp100 e c t False = []; 304.00/273.28 " 304.00/273.28 "lex12Lex11 c s True = (c : [],s) : []; 304.00/273.28 lex12Lex11 c s False = lex12Lex9 c s (lex12IsSym c); 304.00/273.28 " 304.00/273.28 "lex12IsSym c = c `elem` '!' : '@' : '#' : '$' : '%' : '&' : '*' : '+' : '.' : '/' : '<' : '=' : '>' : '?' : '\' : '^' : '|' : ':' : '-' : '~' : []; 304.00/273.28 " 304.00/273.28 "lex12Lex40 c ds (fe,t) = (c : ds ++ fe,t) : []; 304.00/273.28 lex12Lex40 c ds xw = []; 304.00/273.28 " 304.00/273.28 "lex12IsSingle c = c `elem` ',' : ';' : '(' : ')' : '[' : ']' : '{' : '}' : '_' : '`' : []; 304.00/273.28 " 304.00/273.28 "lex12LexExp10 e (c : t) = lex12LexExp100 e c t (c `elem` '+' : '-' : []); 304.00/273.28 lex12LexExp10 e wz = []; 304.00/273.28 " 304.00/273.28 "lex12Lex5 c vu62 = lex12Lex50 c vu62; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp1 vu64 = lex12LexFracExp10 vu64; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp (wyv : wyy) = lex12LexFracExp5 (wyv : wyy); 304.00/273.28 lex12LexFracExp s = lex12LexFracExp2 s; 304.00/273.28 " 304.00/273.28 "lex12LexExp00 e c (ds,u) = (e : c : ds,u) : []; 304.00/273.28 lex12LexExp00 e c wx = []; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp3 wyv c cs True = concatMap lex12LexFracExp1 (lexDigits (c : cs)); 304.00/273.28 lex12LexFracExp3 wyv c cs False = lex12LexFracExp2 (wyv : c : cs); 304.00/273.28 " 304.00/273.28 "lex12Lex4 c ds vu61 = lex12Lex40 c ds vu61; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp0 ds vu63 = lex12LexFracExp00 ds vu63; 304.00/273.28 " 304.00/273.28 "lex12LexExp20 e (ds,t) = (e : ds,t) : []; 304.00/273.28 lex12LexExp20 e wy = []; 304.00/273.28 " 304.00/273.28 "lex12LexExp4 e s True = concatMap (lex12LexExp1 e) (s : []) ++ concatMap (lex12LexExp2 e) (lexDigits s); 304.00/273.28 lex12LexExp4 e s False = lex12LexExp3 (e : s); 304.00/273.28 " 304.00/273.28 "lex12LexExp5 (e : s) = lex12LexExp4 e s (e `elem` 'e' : 'E' : []); 304.00/273.28 lex12LexExp5 wxz = lex12LexExp3 wxz; 304.00/273.28 " 304.00/273.28 "lex12LexExp0 e c vu65 = lex12LexExp00 e c vu65; 304.00/273.28 " 304.00/273.28 "lex12Lex2 c vu59 = lex12Lex20 c vu59; 304.00/273.28 " 304.00/273.28 "lex12LexFracExp00 ds (e,u) = ('.' : ds ++ e,u) : []; 304.00/273.28 lex12LexFracExp00 ds xv = []; 304.00/273.28 " 304.00/273.28 "lex12Lex6 c s True = []; 304.00/273.28 " 304.00/273.28 The bindings of the following Let/Where expression 304.00/273.28 "readParen0 b where { 304.00/273.28 mandatory r = concatMap mandatory2 (lex r); 304.00/273.28 ; 304.00/273.28 mandatory0 x vu48 = mandatory00 x vu48; 304.00/273.28 ; 304.00/273.28 mandatory00 x (yuw : yux,u) = mandatory002 x (yuw : yux,u); 304.00/273.28 mandatory00 x vwu = mandatory000 x vwu; 304.00/273.28 ; 304.00/273.28 mandatory000 x vwu = []; 304.00/273.28 ; 304.00/273.28 mandatory001 True x (yuw : [],u) = (x,u) : []; 304.00/273.28 mandatory001 yuy yuz yvu = mandatory000 yuz yvu; 304.00/273.28 ; 304.00/273.28 mandatory002 x (yuw : yux,u) = mandatory001 (yuw == ')') x (yuw : yux,u); 304.00/273.28 mandatory002 yvv yvw = mandatory000 yvv yvw; 304.00/273.28 ; 304.00/273.28 mandatory1 vu49 = mandatory10 vu49; 304.00/273.28 ; 304.00/273.28 mandatory10 (x,t) = concatMap (mandatory0 x) (lex t); 304.00/273.28 mandatory10 vwv = []; 304.00/273.28 ; 304.00/273.28 mandatory2 vu50 = mandatory20 vu50; 304.00/273.28 ; 304.00/273.28 mandatory20 (xzv : xzw,s) = mandatory202 (xzv : xzw,s); 304.00/273.28 mandatory20 vvz = mandatory200 vvz; 304.00/273.28 ; 304.00/273.28 mandatory200 vvz = []; 304.00/273.28 ; 304.00/273.28 mandatory201 True (xzv : [],s) = concatMap mandatory1 (optional s); 304.00/273.28 mandatory201 xzx xzy = mandatory200 xzy; 304.00/273.28 ; 304.00/273.28 mandatory202 (xzv : xzw,s) = mandatory201 (xzv == '(') (xzv : xzw,s); 304.00/273.28 mandatory202 xzz = mandatory200 xzz; 304.00/273.28 ; 304.00/273.28 optional r = g r ++ mandatory r; 304.00/273.28 ; 304.00/273.28 readParen0 True = mandatory; 304.00/273.28 readParen0 False = optional; 304.00/273.28 } 304.00/273.28 " 304.00/273.28 are unpacked to the following functions on top level 304.00/273.28 "readParenMandatory000 zvv x vwu = []; 304.00/273.28 " 304.00/273.28 "readParenMandatory200 zvv vvz = []; 304.00/273.28 " 304.00/273.28 "readParenMandatory00 zvv x (yuw : yux,u) = readParenMandatory002 zvv x (yuw : yux,u); 304.00/273.28 readParenMandatory00 zvv x vwu = readParenMandatory000 zvv x vwu; 304.00/273.28 " 304.00/273.28 "readParenMandatory0 zvv x vu48 = readParenMandatory00 zvv x vu48; 304.00/273.28 " 304.00/273.28 "readParenMandatory001 zvv True x (yuw : [],u) = (x,u) : []; 304.00/273.28 readParenMandatory001 zvv yuy yuz yvu = readParenMandatory000 zvv yuz yvu; 304.00/273.28 " 304.00/273.28 "readParenMandatory zvv r = concatMap (readParenMandatory2 zvv) (lex r); 304.00/273.28 " 304.00/273.28 "readParenMandatory20 zvv (xzv : xzw,s) = readParenMandatory202 zvv (xzv : xzw,s); 304.00/273.28 readParenMandatory20 zvv vvz = readParenMandatory200 zvv vvz; 304.00/273.28 " 304.00/273.28 "readParenMandatory10 zvv (x,t) = concatMap (readParenMandatory0 zvv x) (lex t); 304.00/273.28 readParenMandatory10 zvv vwv = []; 304.00/273.28 " 304.00/273.28 "readParenMandatory002 zvv x (yuw : yux,u) = readParenMandatory001 zvv (yuw == ')') x (yuw : yux,u); 304.00/273.28 readParenMandatory002 zvv yvv yvw = readParenMandatory000 zvv yvv yvw; 304.00/273.28 " 304.00/273.28 "readParenMandatory201 zvv True (xzv : [],s) = concatMap (readParenMandatory1 zvv) (readParenOptional zvv s); 304.00/273.28 readParenMandatory201 zvv xzx xzy = readParenMandatory200 zvv xzy; 304.00/273.28 " 304.00/273.28 "readParenOptional zvv r = zvv r ++ readParenMandatory zvv r; 304.00/273.28 " 304.00/273.28 "readParenReadParen0 zvv True = readParenMandatory zvv; 304.00/273.28 readParenReadParen0 zvv False = readParenOptional zvv; 304.00/273.28 " 304.00/273.28 "readParenMandatory2 zvv vu50 = readParenMandatory20 zvv vu50; 304.00/273.28 " 304.00/273.28 "readParenMandatory1 zvv vu49 = readParenMandatory10 zvv vu49; 304.00/273.28 " 304.00/273.28 "readParenMandatory202 zvv (xzv : xzw,s) = readParenMandatory201 zvv (xzv == '(') (xzv : xzw,s); 304.00/273.28 readParenMandatory202 zvv xzz = readParenMandatory200 zvv xzz; 304.00/273.28 " 304.00/273.28 The bindings of the following Let/Where expression 304.00/273.28 "readParen False read' where { 304.00/273.28 read' r = read'' r ++ concatMap read'1 (lex r); 304.00/273.28 ; 304.00/273.28 read'' r = concatMap (read''1 readPos) (lex r); 304.00/273.28 ; 304.00/273.28 read''0 s vu80 = read''00 s vu80; 304.00/273.28 ; 304.00/273.28 read''00 s (n,[]) = (n,s) : []; 304.00/273.28 read''00 s vwx = []; 304.00/273.28 ; 304.00/273.28 read''1 readPos vu81 = read''10 readPos vu81; 304.00/273.28 ; 304.00/273.28 read''10 readPos (str,s) = concatMap (read''0 s) (readPos str); 304.00/273.28 read''10 readPos vww = []; 304.00/273.28 ; 304.00/273.28 read'0 vu78 = read'00 vu78; 304.00/273.28 ; 304.00/273.28 read'00 (x,t) = (`negate` x,t) : []; 304.00/273.28 read'00 vwz = []; 304.00/273.28 ; 304.00/273.28 read'1 vu79 = read'10 vu79; 304.00/273.28 ; 304.00/273.28 read'10 (yvz : ywu,s) = read'102 (yvz : ywu,s); 304.00/273.28 read'10 vwy = read'100 vwy; 304.00/273.28 ; 304.00/273.28 read'100 vwy = []; 304.00/273.28 ; 304.00/273.28 read'101 True (yvz : [],s) = concatMap read'0 (read'' s); 304.00/273.28 read'101 ywv yww = read'100 yww; 304.00/273.28 ; 304.00/273.28 read'102 (yvz : ywu,s) = read'101 (yvz == '-') (yvz : ywu,s); 304.00/273.28 read'102 ywx = read'100 ywx; 304.00/273.28 } 304.00/273.28 " 304.00/273.28 are unpacked to the following functions on top level 304.00/273.28 "readSignedRead'100 zvw vwy = []; 304.00/273.28 " 304.00/273.28 "readSignedRead'102 zvw (yvz : ywu,s) = readSignedRead'101 zvw (yvz == '-') (yvz : ywu,s); 304.00/273.28 readSignedRead'102 zvw ywx = readSignedRead'100 zvw ywx; 304.00/273.28 " 304.00/273.28 "readSignedRead''1 zvw readPos vu81 = readSignedRead''10 zvw readPos vu81; 304.00/273.28 " 304.00/273.28 "readSignedRead'1 zvw vu79 = readSignedRead'10 zvw vu79; 304.00/273.28 " 304.00/273.28 "readSignedRead'101 zvw True (yvz : [],s) = concatMap (readSignedRead'0 zvw) (readSignedRead'' zvw s); 304.00/273.28 readSignedRead'101 zvw ywv yww = readSignedRead'100 zvw yww; 304.00/273.28 " 304.00/273.28 "readSignedRead' zvw r = readSignedRead'' zvw r ++ concatMap (readSignedRead'1 zvw) (lex r); 304.00/273.28 " 304.00/273.28 "readSignedRead''00 zvw s (n,[]) = (n,s) : []; 304.00/273.28 readSignedRead''00 zvw s vwx = []; 304.00/273.28 " 304.00/273.28 "readSignedRead'10 zvw (yvz : ywu,s) = readSignedRead'102 zvw (yvz : ywu,s); 304.00/273.28 readSignedRead'10 zvw vwy = readSignedRead'100 zvw vwy; 304.00/273.28 " 304.00/273.28 "readSignedRead'' zvw r = concatMap (readSignedRead''1 zvw zvw) (lex r); 304.00/273.28 " 304.00/273.28 "readSignedRead'00 zvw (x,t) = (`negate` x,t) : []; 304.00/273.28 readSignedRead'00 zvw vwz = []; 304.00/273.28 " 304.00/273.28 "readSignedRead''10 zvw readPos (str,s) = concatMap (readSignedRead''0 zvw s) (readPos str); 304.00/273.28 readSignedRead''10 zvw readPos vww = []; 304.00/273.28 " 304.00/273.28 "readSignedRead'0 zvw vu78 = readSignedRead'00 zvw vu78; 304.00/273.28 " 304.00/273.28 "readSignedRead''0 zvw s vu80 = readSignedRead''00 zvw s vu80; 304.00/273.28 " 304.00/273.28 The bindings of the following Let/Where expression 304.00/273.28 "getChar >>= getLine1 where { 304.00/273.28 getLine0 c ls = return (c : ls); 304.00/273.28 ; 304.00/273.28 getLine1 c = getLine10 c (c == '\10'); 304.00/273.28 ; 304.00/273.28 getLine10 c True = return []; 304.00/273.28 getLine10 c False = getRest >>= getLine0 c; 304.00/273.28 ; 304.00/273.28 getRest = catch getChar getRest0 >>= getRest2; 304.00/273.28 ; 304.00/273.28 getRest0 ex = getRest00 ex (isEOFError ex); 304.00/273.28 ; 304.00/273.28 getRest00 ex True = return '\10'; 304.00/273.28 getRest00 ex False = ioError ex; 304.00/273.28 ; 304.00/273.28 getRest1 c cs = return (c : cs); 304.00/273.28 ; 304.00/273.28 getRest2 c = getRest20 c (c == '\10'); 304.00/273.28 ; 304.00/273.28 getRest20 c True = return []; 304.00/273.28 getRest20 c False = getRest >>= getRest1 c; 304.00/273.28 } 304.00/273.28 " 304.00/273.28 are unpacked to the following functions on top level 304.00/273.28 "getLineGetLine10 c True = return []; 304.00/273.28 getLineGetLine10 c False = getLineGetRest >>= getLineGetLine0 c; 304.00/273.28 " 304.00/273.28 "getLineGetLine1 c = getLineGetLine10 c (c == '\10'); 304.00/273.28 " 304.00/273.28 "getLineGetLine0 c ls = return (c : ls); 304.00/273.28 " 304.00/273.28 "getLineGetRest2 c = getLineGetRest20 c (c == '\10'); 304.00/273.28 " 304.00/273.28 "getLineGetRest20 c True = return []; 304.00/273.28 getLineGetRest20 c False = getLineGetRest >>= getLineGetRest1 c; 304.00/273.28 " 304.00/273.28 "getLineGetRest1 c cs = return (c : cs); 304.00/273.28 " 304.00/273.28 "getLineGetRest = catch getChar getLineGetRest0 >>= getLineGetRest2; 304.00/273.28 " 304.00/273.28 "getLineGetRest0 ex = getLineGetRest00 ex (isEOFError ex); 304.00/273.28 " 304.00/273.28 "getLineGetRest00 ex True = return '\10'; 304.00/273.28 getLineGetRest00 ex False = ioError ex; 304.00/273.28 " 304.00/273.28 304.00/273.28 ---------------------------------------- 304.00/273.28 304.00/273.28 (12) 304.00/273.28 Obligation: 304.00/273.28 mainModule Main 304.00/273.28 module Main where { 304.00/273.28 import qualified Prelude; 304.00/273.28 } 304.00/273.28 304.00/273.28 ---------------------------------------- 304.00/273.28 304.00/273.28 (13) NumRed (SOUND) 304.00/273.28 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 304.00/273.28 ---------------------------------------- 304.00/273.28 304.00/273.28 (14) 304.00/273.28 Obligation: 304.00/273.28 mainModule Main 304.00/273.28 module Main where { 304.00/273.28 import qualified Prelude; 304.00/273.28 } 304.00/273.34 EOF