什么是Haskell的< - ?等效的clojure

zca*_*ate 3 monads haskell clojure

我试图找出IO monad和<-我经常在Haskell代码中看到的语法.我已经看到它用于多种数据类型,包括数组和IO.

如果我自己指定一个,那么clojure中的等效操作是什么?

Chu*_*uck 6

标记只是标准monad操作的糖.例如,如果你有这样的东西:

do
  x <- someMonad
  return (someFunction x)
Run Code Online (Sandbox Code Playgroud)

这相当于:

someMonad >>= \x -> return (someFunction x)
Run Code Online (Sandbox Code Playgroud)

所以使用众多monad库之一的等效Clojure可能是这样的:

(m-bind some-monad (fn [x] (m-result (some-function x))))
Run Code Online (Sandbox Code Playgroud)