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版(不断更新)

整体风格

首先请参考:clojure风格指南, 代码中的具体问题参照本文.

进入阅读→

cljs代码规范和最佳实践2021-03-27版(不断更新)

cljs

在cljs中不要直接操作js对象

进入阅读→

clj代码规范和最佳实践2021-03-27(不断更新)

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项目

步骤

创建工程目录

  1. 创建一个文件夹 mkdir rn-demo
  2. 创建shaodw-cljs.end文件 touch shadow-cljs.edn
进入阅读→