@@ -0,0 +1,33 @@
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE TypeFamilies #-}
3+{-# LANGUAGE TypeOperators #-}
6+import Control.Monad.Trans.Either
7+import Control.Monad.Trans.Reader
11+type ReaderAPI = "a" :> Get '[JSON] Int
12+ :<|> "b" :> Get '[JSON] String
14+readerAPI :: Proxy ReaderAPI
17+readerServerT :: ServerT ReaderAPI (Reader String)
18+readerServerT = a :<|> b
20+ where a :: Reader String Int
23+ b :: Reader String String
26+readerServer :: Server ReaderAPI
27+readerServer = enter readerToEither readerServerT
29+ where readerToEither :: Reader String :~> EitherT ServantErr IO
30+ readerToEither = Nat $ \r -> return (runReader r "hi")
33+app = serve readerAPI readerServer