Clojure 浮点数运算
BigDecimal
浮点数虽然表示的范围大,但常常无法精确表示。比如 (+ 0.1 0.2) 结果并不是预期的 0.3,而是 0.30000000000000004,有一个网站http://0.30000000000000004.com/解释了产生这种情况的原因以及在各个语言中的表现。
在Clojure中为了精确表示数值运算(比如金额计算),可以借助于Java中的 BigDecimal来处理。
Leiningen依赖冲突的解决
现象
工程有多多个jar依赖的时候, 遇到版本冲突的情况比较普遍. 一般是我们在project.clj中更新一个依赖以后, 发现工程起不来了.
执行 lein deps :tree 能看到类似提示
✗ lein deps :tree
Possibly confusing dependencies found:
[com.taoensso/timbre "4.10.0"] -> [com.taoensso/encore "2.91.0"]
overrides
[com.taoensso/sente "1.15.0"] -> [com.taoensso/encore "2.117.0"]
Consider using these exclusions:
[com.taoensso/sente "1.15.0" :exclusions [com.taoensso/encore]]
进入阅读→
clj/cljs代码规范和最佳实践2020-06-01版(不断更新)
(require '[reagent.core :as r])
整体风格
首先请参考:clojure风格指南, 代码中的具体问题参照本文.
进入阅读→cljs代码规范和最佳实践2021-03-27版(不断更新)
(require '[reagent.core :as r])
cljs
在cljs中不要直接操作js对象
进入阅读→clj代码规范和最佳实践2021-03-27(不断更新)
(require '[reagent.core :as r])
clojure
变量,函数, 命名空间命名规则遵循clojure风格指南的约定.
进入阅读→java-time的使用笔记
Clojure的时间处理库, 得益于Java的历史积淀(包袱), 确实有点多:
- Joda time
- java.util.Date
- clj-time
- java-time(JDK 1.8 引入java.time的clj封装)
推荐在Java环境中完全使用java-time
进入阅读→用了MOSH, SSH再也回不去了
用MOSH有几年了, 居然没有找到一份好的中文介绍(英文的似乎也不多)
简介
吐槽SSH就是对MOSH最好的介绍了.
进入阅读→Clojure脚本开发bb和nbb
使用Clojure开发脚本
脚本有别于web和桌面应用开发, 第一需求是快, 快速启动, 快速结束. 执行效率不是要求特别高. 主要看中是启动速度.
能够方便的调用其他脚本, 文本操作能力强.
进入阅读→shadow-cljs介绍
什么是shadow-cljs
shadow是cljs编译工具, 提供了极佳的cljs开发体验, 它帮我们解决了以下问题:
- cljs项目编译/配置
- npm集成
- 快速编译cljs, 以及已经编译的cljs代码的cache
- 多种编译目标的支持: :browser, :node-script, :npm-module, :react-native, :chrome-extension
- 代码(cljs, css)的热更新(hot-relaod)
- 自带cljs的repl
- 代码分包(coce splitting)
从零开始创建一个shadow-cljs的react native项目
步骤
创建工程目录
- 创建一个文件夹
mkdir rn-demo - 创建shaodw-cljs.end文件
touch shadow-cljs.edn