我可以使用带有clojurescript的monad吗?

时间:2012-07-06 19:03:40

标签: clojure monads clojurescript

我知道monj可用于clojure,但有没有人证实他们在clojurescript中工作?

3 个答案:

答案 0 :(得分:3)

Monads在clojurescript中工作。唯一的就是你在clojurescript [1]中引用宏的方式。

我所做的是将所有tools / macro.clj和所有monads.clj代码复制到一个大文件中,然后我从clojurescript中引用。

这可能不是最优雅的方式,但它有效。

您可以在https://github.com/cotarmanach/clojurescript-monad-macros中找到该文件 (我在我的项目中复制它并将命名空间更改为我的项目之一)

[1]见https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure

  

ClojureScript的宏是用Clojure编写的,并通过引用来引用   名称空间声明中的require-macros关键字:

     

(ns my.namespace(:require-macros [my.macros:as my])):as   前缀选择器在:require-macros中是必需的。值得注意的是   由ClojureScript宏生成的代码必须以   ClojureScript中的功能。

答案 1 :(得分:2)

函数式编程方法Monads只需要具有更高阶函数和闭包的语言。你需要一个ClojureScript monad库。或者你可以继续以monadic风格编写你的ClojureScript

编辑:通过“monadic style”我指的是编写和编写功能,这些功能可以获取并返回monadic值并实现三个monad laws。有太多人比我更有资格解释monad,所以我只会链接到one of my personal favorite videos on monads

答案 2 :(得分:1)

Chris Zheng的ClojureScript Fluokitten库有一个很棒的端口:https://github.com/purnam/brahmin

克里斯有一个great post reflecting on Monads因此。

分类理论的猫库也很好https://funcool.github.io/cats/latest/

ClojureScript中的Monads活得很好。