使用 Lamina : Simple clock code? 的 Clojure 函数式响应式(Reactive)编程 (FRP)

标签 clojure reactive-programming lamina-clojure

我正在使用 Lamina实现函数式响应式(Reactive)编程 (FRP)。

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

根据Lamina 0.5.0-rc4 API文档,有lamina.time API: http://ideolalia.com/lamina/lamina.time.html#var-now

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

  • 作为 Observable time Streaming Collection/List/Seq 的每一秒的间隔(我还不太明白其中的区别)(编辑:现在我明白它叫做 Channels在 Lamina 上)

  • 现在作为 Observable 流数据

  • 每秒打印一次(订阅或 for-each Observable 时间集合)

欢迎任何反馈。谢谢。

编辑:我退出了。

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

在我的相关问题中查看 ClojureScript + RxJs + node.js 的示例代码: ClojureScript on node.js, code

最佳答案

你可以试试 Bacon.js ,在其作者提示其晦涩的 API 后创建的 Rx.js 的继任者。 Bacon.js 非常干净,可以与 jQuery、Backbone.js、AngularJS 甚至 Node.js 集成。基本上,您可以将任何类型的事件包装到 Bacon 的事件流中,然后开始使用它们做一些很棒的事情。

奖励:您甚至可以尝试 yolk ,被描述为“围绕 bacon.js 的薄 Clojurescript 包装器”。

-- 编辑:快速修复拼写错误

关于使用 Lamina : Simple clock code? 的 Clojure 函数式响应式(Reactive)编程 (FRP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457690/

相关文章:

clojure - 如何将 lamina/aleph 安装到 Clojure?

jar - clojure/lein : Can I specify a project file for lein other than project. clj?

clojure - 编译 ClojureScript 时为 "Address already in use"

rx-java - RxJava : How to to execute a task every 5 seconds only if the last task finished

java - 如何在响应式 java 中从 Mono<String> 获取字符串

r - eventReactive 对所有输入值使用react

Clojure core.async 和 Lamina

clojure - 在 Clojure 中的同一命名空间中使用函数之前,我是否需要声明函数?

clojure - 在 Clojure 中构建字符串时遇到问题