git.iko.soy/typeable/servant
on feef8ca help sign in
33 lines 837 B history raw
1{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE TypeFamilies #-}
3{-# LANGUAGE TypeOperators #-}
4module T7 where
6import Control.Monad.Trans.Except
7import Control.Monad.Trans.Reader
8import Network.Wai
9import Servant
11type ReaderAPI = "a" :> Get '[JSON] Int
12 :<|> "b" :> Get '[JSON] String
14readerAPI :: Proxy ReaderAPI
15readerAPI = Proxy
17readerServerT :: ServerT ReaderAPI (Reader String)
18readerServerT = a :<|> b
20 where a :: Reader String Int
21 a = return 1797
23 b :: Reader String String
24 b = ask
26readerServer :: Server ReaderAPI
27readerServer = enter readerToEither readerServerT
29 where readerToEither :: Reader String :~> ExceptT ServantErr IO
30 readerToEither = Nat $ \r -> return (runReader r "hi")
32app :: Application
33app = serve readerAPI readerServer