6

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

4

3 回答 3

3

单子在 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])) :require-macros 中需要 :as 前缀选择器。需要注意的一点是,由 ClojureScript 宏生成的代码必须针对 ClojureScript 中的功能。

于 2013-11-17T16:42:49.347 回答
2

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

编辑:通过“单子风格”,我指的是编写和编写函数,这些函数接受和返回单子值并实现三个单子定律。有太多人比我更有资格解释 monads,所以我只链接到我个人最喜欢的关于 monads 的视频之一

于 2012-07-06T19:15:30.190 回答
1

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

因此, Chris 有一篇很棒的帖子来反映 Monads

类别理论的猫库也不错https://funcool.github.io/cats/latest/

ClojureScript 中的 Monads 活得很好。

于 2015-12-22T23:11:30.357 回答