Clojure Functional Responsive programming(FRP)with Lamina:简单时钟代码?

Clojure Functional Responsive programming(FRP)with Lamina:简单时钟代码?,clojure,reactive-programming,lamina-clojure,Clojure,Reactive Programming,Lamina Clojure,我用它来实现函数式反应式编程(FRP) 作为初学者,我尝试编写一个非常简单的时钟代码,以了解库的基本知识 根据Lamina 0.5.0-rc4 API文件,Lamina.time API: 我想实现一个非常简单的时钟,其中: 每秒钟的间隔作为可观察的时间流收集/列表/序列(我还不太了解区别)(编辑:现在我知道它被称为薄层) 现在作为可观察的流数据 每秒打印一次(订阅或为每个可观察到的时间集合) 欢迎任何反馈。谢谢 编辑:我退出。 经过一些研究,我得出结论,编写FRP代码的最佳方法是使用Rx

我用它来实现函数式反应式编程(FRP)

作为初学者,我尝试编写一个非常简单的时钟代码,以了解库的基本知识

根据Lamina 0.5.0-rc4 API文件,Lamina.time API:

我想实现一个非常简单的时钟,其中:

  • 每秒钟的间隔作为可观察的时间流收集/列表/序列(我还不太了解区别)(编辑:现在我知道它被称为薄层)

  • 现在作为可观察的流数据

  • 每秒打印一次(订阅或为每个可观察到的时间集合)

欢迎任何反馈。谢谢

编辑:我退出。

经过一些研究,我得出结论,编写FRP代码的最佳方法是使用RxJs(MS的反应扩展)编写ClojureScript。

请参见我的相关Qestion中ClojureScript+RxJs+node.js的示例代码:

我发现了一篇好文章:

-高级异步处理

(ns example.helloperiodically
  (:require [lamina.core :as lamina]))

(def ch (lamina/periodically 1000 (fn [] "Hello World!")))

(def loop-forever (comp doall repeatedly))

(defn consumer []
   (loop-forever
     (fn [] (println @(lamina/read-channel ch)))))

(defn main []
  (-> (Thread. consumer) .start))
你可以试试,Rx.js的继承者是在其作者抱怨其API晦涩难懂后创建的。Bacon.js非常干净,可以与jQuery、Backbone.js、AngularJS甚至Node.js集成。基本上,你可以将任何类型的事件包装到Bacon的事件流中,并开始用它们做精彩的事情

好处:您甚至可以尝试,被描述为“bacon.js周围的一层薄薄的Clojurescript包装”

--编辑:快速纠正打字错误

为什么不试试?它实现了功能性和面向对象的方法。它有一个node.js(proact.js)包-它稳定且经过良好测试