【问题标题】:Can I use monads with clojurescript?我可以将 monad 与 clojurescript 一起使用吗?
【发布时间】:2012-07-06 19:03:39
【问题描述】:

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

【问题讨论】:

    标签: clojure monads clojurescript


    【解决方案1】:

    Monad 在 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 中的功能。

    【讨论】:

      【解决方案2】:

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

      编辑:通过“monadic 风格”,我指的是编写和组合函数,这些函数接受和返回 monadic 值并实现三个monad laws。有太多人比我更有资格解释 monad,所以我将链接到 one of my personal favorite videos on monads

      【讨论】:

      • 你知道 clojure.contrib.monads 是否可以在 clojurescript 中工作吗?
      • 问题很清楚:Clojrue 的 monad 库 - clojure.contrib.monad - 在编译到 ClojureScript 时是否有效?您的回答似乎根本没有回答这个问题。
      • 问这个问题的时候没有。
      【解决方案3】:

      Chris Zheng 将 Fluokitten 库移植到 ClojureScript:https://github.com/purnam/brahmin

      克里斯因此拥有great post reflecting on Monads

      Category Theory 的猫库也不错https://funcool.github.io/cats/latest/

      ClojureScript 中的 Monads 活得很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-07
        • 2015-06-16
        • 2023-03-25
        • 2020-08-04
        • 2018-10-23
        • 2011-02-22
        • 2021-03-16
        • 2016-11-20
        相关资源
        最近更新 更多