Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure core.async中是否有mapM/mapM_uu?_Clojure_Monads_Core.async - Fatal编程技术网

Clojure core.async中是否有mapM/mapM_uu?

Clojure core.async中是否有mapM/mapM_uu?,clojure,monads,core.async,Clojure,Monads,Core.async,我正在core.async中寻找一个函数,它可以执行以下操作: (map-m #(go (inc %)) (range 5)) ; => a channel with one value inside: '(1 2 3 4 5) 一个简单(非惰性)实现: ; mapM :: Monad m => (a -> m b) -> [a] -> m [b] (defn map-m [f col] (go-loop [col col out []

我正在core.async中寻找一个函数,它可以执行以下操作:

(map-m #(go (inc %)) (range 5))
; => a channel with one value inside: '(1 2 3 4 5)
一个简单(非惰性)实现:

; mapM :: Monad m => (a -> m b) -> [a] -> m [b]
(defn map-m [f col]
  (go-loop [col col
            out []]
    (if (seq col)
      (recur (rest col)
        (conj out (<! (f (first col)))))
      out)))
;mapM::Monad m=>(a->mb)->[a]->m[b]
(defn-map-m[f col]
(循环[列]
out[]]
(如有)(列示序号)
(复发(静止)
(连体)(

标准core.async API有类似的功能吗?

可以创建通道将传感器应用于每个输入-可以创建通道将传感器应用于每个输入-