equal
deleted
inserted
replaced
46 -} |
46 -} |
47 -- Answers |
47 -- Answers |
48 |
48 |
49 data Answer = Known Bool | Unknown Pos deriving Show; |
49 data Answer = Known Bool | Unknown Pos deriving Show; |
50 |
50 |
51 answer :: a -> (a -> IO b) -> (Pos -> IO b) -> IO b |
51 answeri :: a -> (a -> IO b) -> (Pos -> IO b) -> IO b; |
52 answer a known unknown = |
52 answeri a known unknown = |
53 do res <- try (evaluate a) |
53 do res <- try (evaluate a) |
54 case res of |
54 case res of |
55 Right b -> known b |
55 Right b -> known b |
56 Left (ErrorCall ('\0':p)) -> unknown (map fromEnum p) |
56 Left (ErrorCall ('\0':p)) -> unknown (map fromEnum p) |
57 Left e -> throw e |
57 Left e -> throw e |
|
58 |
|
59 answer :: Bool -> (Bool -> IO b) -> (Pos -> IO b) -> IO b; |
|
60 answer a known unknown = |
|
61 Control.Exception.catch (answeri a known unknown) |
|
62 (\ (PatternMatchFail _) -> known True) |
58 |
63 |
59 -- Proofs and Refutation |
64 -- Proofs and Refutation |
60 |
65 |
61 data Quantifier = ExistentialQ | UniversalQ |
66 data Quantifier = ExistentialQ | UniversalQ |
62 |
67 |