私はNetwork.Linklaterパッケージを使用して、基本的なslackbotを実装しようとしています:多分モナドが強制されるのはなぜですか?
https://github.com/hlian/linklater
このパッケージには、次の関数を定義しています
slashSimple :: (Command -> IO Text) -> Application
slashSimple f =
slash (\command _ respond -> f command >>= (respond . responseOf status200))
私はそうのように、これを消費しようとしています:
kittensBot :: Command -> IO Text
kittensBot cmd = do
putStrLn("+ Incoming command: " ++ show cmd)
return "ok"
main :: IO()
main = do
putStrLn ("Listening on port: " ++ show port)
run port (slashSimple kittensBot)
where
port = 3001
これは(コンパイル時に)
を生成します。ただし、slashSimple
の署名は(Command -> IO Text) -> Application
です。 kittensBot
の署名はそれを満たすべきではありませんか?それはなぜですか?あなたが報告したようにGitHubのマスターでslashSimple
の定義ですが
こんにちは!私はパッケージの作者です。 GitHubの4.0とHackageの3.2との間の(また広がっている)ギャップについては残念です。私はまだ、新しいWeb Socket API Slack用の十分なAPIを一緒に試してみようとしていますが、まもなくそれを公開してすぐに公開します。 – hao
4.0.0.0用の新しいドキュメントをhttp://hlian.github.io/linklater/hackage/ – hao