*RE> let justRE1 = readRegularExpression "ab |c d *" *RE> justRE1 Just (Choice (Concat (Char 'a') (Char 'b')) (Concat (Char 'c') (Star (Char 'd')))) *RE> let rec1 = recognize re1 where Just re1 = justRE1 *RE> rec1 "ab" True *RE> rec1 "cddd" True *RE> rec1 "c" True *RE> rec1 "abcd" False *RE> let justRE2 = readRegularExpression "(ab|a)(c|bd)" *RE> let rec2 = recognize re2 where Just re2 = justRE2 *RE> rec2 :1:0: No instance for (Show (String -> Bool)) arising from a use of `print' at :1:0-3 Possible fix: add an instance declaration for (Show (String -> Bool)) In a stmt of a 'do' expression: print it *RE> justRE2 Just (Concat (Choice (Concat (Char 'a') (Char 'b')) (Char 'a')) (Choice (Char 'c') (Concat (Char 'b') (Char 'd')))) *RE> rec2 "abd" True *RE> rec2 "abbd" True *RE> rec2 "abbbd" False *RE> let justRE3 = readRegularExpression "(ab|a)(c|bd|d)" *RE> justRE3 Just (Concat (Choice (Concat (Char 'a') (Char 'b')) (Char 'a')) (Choice (Char 'c') (Choice (Concat (Char 'b') (Char 'd')) (Char 'd')))) *RE> let rec3 = recognize re3 where Just re3 = justRE3 *RE> rec3 "abd" True *RE> rec3 "ad" True *RE> rec3 "abbd" True *RE> rec3 "abbbd" False *RE> let parserRE3 = generateParser re3 where Just re3 = justRE3 *RE> :t parserRE3 parserRE3 :: Parser () *RE> parse parserRE3 "abbd" [((),"")] *RE> parse parserRE3 "abd" [((),""),((),"")] *RE> parse parserRE3 "abd(" [((),"("),((),"(")] *RE>