okapi
okapi copied to clipboard
Split `MonadServer m` into `MonadRequest m` and `MonadResponse m`
Should look something like:
-- type MonadServer m = (MonadRequest m, MonadResponse m)
class (MonadRequest m, MonadResponse m) => MonadServer m where
throw :: ...
next :: ...
class Monad m => MonadRequest m where
pathParam :: ...
queryParam :: ...
class Monad m => MonadResponse m where
write :: forall a. Writeable a => a -> m ()
to make Okapi functions more descriptive and to constrain their abilities accordingly. Inspired by "IO Monad Considered Harmful". Don't know if this would work.