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