相关疑难解决方法(0)

为Clojure映射和减少Monad ...... Juxt Monad怎么样?

在学习Clojure的同时,我花了很多时间试图理解monad - 它们是什么以及我们如何使用它们......并没有太多的成功.然而,我发现了一个出色的'Monads for Dummies'视频系列 - http://vimeo.com/20717301 - 作者:Brian Marik为Clojure

到目前为止,我对monad的理解是它有点像一个宏,它允许一组语句以易于阅读的形式编写 - 但monad更加正式化.我的观察仅限于两个例子:

1.身份Monad(或'let'monad)取自http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/

我们希望写的表格是:

(let [a  1
      b  (inc a)]
  (* a b))
Run Code Online (Sandbox Code Playgroud)

和相应的monad是

(domonad identity-m
    [a  1
     b  (inc a)]
 (* a b))
Run Code Online (Sandbox Code Playgroud)

2.序列Monad(或'for'monad)取自http://onclojure.com/2009/03/06/a-monad-tutorial-for-clojure-programmers-part-2/

我们希望写的形式是:

(for [a (range 5)
      b (range a)]
  (* a b))
Run Code Online (Sandbox Code Playgroud)

和相应的monad是

(domonad sequence-m
  [a (range 5)
   b (range a)]
  (* a b))
Run Code Online (Sandbox Code Playgroud)

Clojure中的Monad定义

查看源代码,使用clojure monads库 - https://github.com/clojure/algo.monads:

user=>(use 'clojure.algo.monads)
nil
Run Code Online (Sandbox Code Playgroud)

indent monad:

user=> (source identity-m)
(defmonad identity-m
  [m-result …
Run Code Online (Sandbox Code Playgroud)

monads reduce clojure map

6
推荐指数
1
解决办法
1489
查看次数

标签 统计

clojure ×1

map ×1

monads ×1

reduce ×1