サーバント 0.5 で REST API の簡単な例を作成したいと思います。
data MyData = MyData { var1 :: Int, var2 :: String }
app :: Application
app = serve api server
api :: Proxy API
api = Proxy
server :: Server API
server = getItems
getItems :: EitherT ServantErr IO [MyData]
getItems = runEitherT $ do
aa <- nextRandom -- IO
bb <- getCurrentTime -- IO
cc <- getDataFromDb -- IO
--noteT ??? How???
--MaybeT ??? How???
return $ Just [MyData 111 222]
startApp :: IO ()
startApp = run 8080 app
さまざまな場所で「予想される型と一致しませんでした」というエラーがたくさんあるため、コンパイルできません。「getItems」で2つの異なるモナドを混在させているためだと思います。しかしそれだけではありません。