module QuitF(quitIdF, quitF) where
import FudgetIO
import HaskellIO
import NullF
import DialogueIO hiding (IOError) -- Exit

--quitF :: F a b
quitF :: F ans ho
quitF =
    forall {f :: * -> * -> *} {ans} {ho}.
FudgetIO f =>
(ans -> f ans ho) -> f ans ho
getHigh forall a b. (a -> b) -> a -> b
$ \ ans
_ ->
    forall a b. Request -> F a b -> F a b
hIOSuccF (Int -> Request
Exit Int
0) forall a b. (a -> b) -> a -> b
$
    forall {hi} {ho}. F hi ho
nullF

--quitIdF :: (a -> Bool) -> F a a
quitIdF :: (ho -> Bool) -> F ho ho
quitIdF ho -> Bool
p =
    forall {f :: * -> * -> *} {ans} {ho}.
FudgetIO f =>
(ans -> f ans ho) -> f ans ho
getHigh forall a b. (a -> b) -> a -> b
$ \ ho
msg ->
    (if ho -> Bool
p ho
msg
     then forall a b. Request -> F a b -> F a b
hIOSuccF (Int -> Request
Exit Int
0)
     else forall {f :: * -> * -> *} {ho} {hi}.
FudgetIO f =>
ho -> f hi ho -> f hi ho
putHigh ho
msg) forall a b. (a -> b) -> a -> b
$
    (ho -> Bool) -> F ho ho
quitIdF ho -> Bool
p