module HaskellIO{-(hIOSucc, hIOSuccK, hIOSuccF,
	         hIO, hIOK, hIOF,
	         hIOerr, hIOerrK, hIOerrF,
	         haskellIO, haskellIOK, haskellIOF)-} where
import Prelude hiding (IOError)
--import Command
--import Cont(cmdContF)
import FudgetIO
import NullF(F)
import FRequest
--import Event
--import Fudget
--import Message(Message(..))
import ShowFailure
--import Sockets
--import Xtypes
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 (SResp sresp) = Just (SocketResponse sresp) -- for backward compat
    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

{---

haskellIOK :: Request -> (Response -> K a b) -> K a b
haskellIOK = haskellIO

hIOerrK :: Request -> (IOError -> K a b) -> (Response -> K a b) -> K a b
hIOerrK = hIOerr

hIOK :: Request -> (Response -> K a b) -> K a b
hIOK = hIO

hIOSuccK :: Request -> (K a b) -> K a b
hIOSuccK = hIOSucc

---}