happstack チュートリアルには、次のサンプルが用意されています。
main :: IO ()
main = simpleHTTP nullConf $ msum
[ do methodM GET
ok $ "You did a GET request.\n"
, do methodM POST
ok $ "You did a POST request.\n"
, dir "foo" $ do methodM GET
ok $ "You did a GET request on /foo.\n"
]
ここでok $
は冗長なようです.3回msum
書く必要がないように、それを取り除く方法はありますか? ok $
私は次のことを試しましたが、コンパイルさえしません:
main :: IO ()
main = simpleHTTP nullConf $ ok $ msum
[ do methodM GET
"You did a GET request.\n"
, do methodM POST
"You did a POST request.\n"
, dir "foo" $ do methodM GET
"You did a GET request on /foo.\n"
]
ok $ "You did a "
これを行う正しい方法はありますか (またはさらに良いことに、 andの全体を引き出します".\n"
)、または単に不可能ですか?
私はまだ Haskell でモナドがどのように機能するかについて理解を深めていますが、上記が不可能な場合は、なぜこれを機能させる合理的な方法がないのか、または何を変更する必要があるのかを大まかに説明していただけますか?可能にするには?ここでできることとできないことについて頭を抱えようとしているだけです。