Haskell 将do替换为>>;=为了一个卑鄙的职位 post”/introducteAnidea“$do 命令>=
不过,我认为在这种情况下,这并不一定更好。以下是如何重写Haskell 将do替换为>>;=为了一个卑鄙的职位 post”/introducteAnidea“$do 命令>=,haskell,Haskell,不过,我认为在这种情况下,这并不一定更好。以下是如何重写do-表示法为>=和>:(注意:在类似c的表示法选项中,换行符变为;。) do{a>=\a->do{b..] do{a;b..}=a>>do{b..} do{a}=a 这就变成了: do { a <- m; b... } = m >>= \a -> do { b... } do { a; b... } = a >> do { b... } do { a } = a post”/introducte
do
-表示法为>=
和>
:(注意:在类似c的表示法选项中,换行符变为;
。)
do{a>=\a->do{b..]
do{a;b..}=a>>do{b..}
do{a}=a
这就变成了:
do { a <- m; b... } = m >>= \a -> do { b... }
do { a; b... } = a >> do { b... }
do { a } = a
post”/introducteanidea“$do{command>=\command->do{json$handle command}
=发布“/introducteAnidea”$jsonData>=\c->json$handle c
Haskell报告描述了一种实现此目的的算法方法:。事实上,Haskell编译器在幕后完成此操作。您还可以删除()
因为
的优先级高于>=
运算符的优先级。@Shersh,是的,但是任何阅读它的人都必须知道这不是我喜欢写代码的方式。$
的优先级很容易记住,但是>=
与
的优先级很少出现,所以很难记住我想对大多数人来说都是这样。
post "/introduceAnIdea" $ jsonData >>= (json . handle)
do { a <- m; b... } = m >>= \a -> do { b... }
do { a; b... } = a >> do { b... }
do { a } = a
post "/introduceAnIdea" $ do { command <- jsonData; json $ handle command}
= post "/introduceAnIdea" $ jsonData >>= \command -> do {json $ handle command}
= post "/introduceAnIdea" $ jsonData >>= \c -> json $ handle c