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 b ho -> f b ho
hIOSucc Request
req = Request -> (Response -> f b ho) -> f b ho
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
hIO Request
req ((Response -> f b ho) -> f b ho)
-> (f b ho -> Response -> f b ho) -> f b ho -> f b ho
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f b ho -> Response -> f b ho
forall a b. a -> b -> a
const

hIOerr :: Request -> (IOError -> f b ho) -> (Response -> f b ho) -> f b ho
hIOerr Request
req IOError -> f b ho
fcont Response -> f b ho
scont =
  Request -> (Response -> f b ho) -> f b ho
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
haskellIO Request
req ((Response -> f b ho) -> f b ho) -> (Response -> f b ho) -> f b ho
forall a b. (a -> b) -> a -> b
$ \ Response
resp ->
  case Response
resp of
    Failure IOError
f -> IOError -> f b ho
fcont IOError
f
    Response
_ -> Response -> f b ho
scont Response
resp

haskellIO :: Request -> (Response -> f b ho) -> f b ho
haskellIO Request
request = FRequest
-> (FResponse -> Maybe Response) -> (Response -> f b ho) -> f b ho
forall (f :: * -> * -> *) ans b ho.
FudgetIO f =>
FRequest -> (FResponse -> Maybe ans) -> (ans -> f b ho) -> f b ho
cmdContLow (Request -> FRequest
DReq Request
request) FResponse -> Maybe Response
expected
  where
    expected :: FResponse -> Maybe Response
expected (DResp Response
response) = Response -> Maybe Response
forall a. a -> Maybe a
Just Response
response
--  expected (SResp sresp) = Just (SocketResponse sresp) -- for backward compat
    expected FResponse
_ = Maybe Response
forall a. Maybe a
Nothing

hIO :: Request -> (Response -> f b ho) -> f b ho
hIO Request
req = Request -> (IOError -> f b ho) -> (Response -> f b ho) -> f b ho
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (IOError -> f b ho) -> (Response -> f b ho) -> f b ho
hIOerr Request
req (\IOError
e -> [Char] -> f b ho
forall a. HasCallStack => [Char] -> a
error ([Char]
"IOError: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ IOError -> [Char]
showFailure IOError
e))

------

haskellIOF :: Request -> (Response -> F a b) -> F a b
haskellIOF :: Request -> (Response -> F a b) -> F a b
haskellIOF = Request -> (Response -> F a b) -> F a b
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
haskellIO

hIOerrF :: Request -> (IOError -> F a b) -> (Response -> F a b) -> F a b
hIOerrF :: Request -> (IOError -> F a b) -> (Response -> F a b) -> F a b
hIOerrF = Request -> (IOError -> F a b) -> (Response -> F a b) -> F a b
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (IOError -> f b ho) -> (Response -> f b ho) -> f b ho
hIOerr

hIOF :: Request -> (Response -> F a b) -> F a b
hIOF :: Request -> (Response -> F a b) -> F a b
hIOF = Request -> (Response -> F a b) -> F a b
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
hIO

hIOSuccF :: Request -> (F a b) -> F a b
hIOSuccF :: Request -> F a b -> F a b
hIOSuccF = Request -> F a b -> F a b
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> f b ho -> f b 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

---}