module HaskellIO where
import Prelude hiding (IOError)
import FudgetIO
import NullF(F)
import FRequest
import ShowFailure
import DialogueIO
hIOSucc :: Request -> f hi ho -> f hi ho
hIOSucc Request
req = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (Response -> f hi ho) -> f hi ho
hIO Request
req forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. a -> b -> a
const
hIOerr :: Request -> (IOError -> f hi ho) -> (Response -> f hi ho) -> f hi ho
hIOerr Request
req IOError -> f hi ho
fcont Response -> f hi ho
scont =
forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (Response -> f hi ho) -> f hi ho
haskellIO Request
req forall a b. (a -> b) -> a -> b
$ \ Response
resp ->
case Response
resp of
Failure IOError
f -> IOError -> f hi ho
fcont IOError
f
Response
_ -> Response -> f hi ho
scont Response
resp
haskellIO :: Request -> (Response -> f hi ho) -> f hi ho
haskellIO Request
request = forall {f :: * -> * -> *} {ans} {hi} {ho}.
FudgetIO f =>
FRequest -> (FResponse -> Maybe ans) -> (ans -> f hi ho) -> f hi ho
cmdContLow (Request -> FRequest
DReq Request
request) FResponse -> Maybe Response
expected
where
expected :: FResponse -> Maybe Response
expected (DResp Response
response) = forall a. a -> Maybe a
Just Response
response
expected FResponse
_ = forall a. Maybe a
Nothing
hIO :: Request -> (Response -> f hi ho) -> f hi ho
hIO Request
req = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (IOError -> f hi ho) -> (Response -> f hi ho) -> f hi ho
hIOerr Request
req (\IOError
e -> forall a. HasCallStack => [Char] -> a
error ([Char]
"IOError: " forall a. [a] -> [a] -> [a]
++ IOError -> [Char]
showFailure IOError
e))
haskellIOF :: Request -> (Response -> F a b) -> F a b
haskellIOF :: forall a b. Request -> (Response -> F a b) -> F a b
haskellIOF = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (Response -> f hi ho) -> f hi ho
haskellIO
hIOerrF :: Request -> (IOError -> F a b) -> (Response -> F a b) -> F a b
hIOerrF :: forall a b.
Request -> (IOError -> F a b) -> (Response -> F a b) -> F a b
hIOerrF = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (IOError -> f hi ho) -> (Response -> f hi ho) -> f hi ho
hIOerr
hIOF :: Request -> (Response -> F a b) -> F a b
hIOF :: forall a b. Request -> (Response -> F a b) -> F a b
hIOF = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> (Response -> f hi ho) -> f hi ho
hIO
hIOSuccF :: Request -> (F a b) -> F a b
hIOSuccF :: forall a b. Request -> F a b -> F a b
hIOSuccF = forall {f :: * -> * -> *} {hi} {ho}.
FudgetIO f =>
Request -> f hi ho -> f hi ho
hIOSucc