【发布时间】:2015-06-15 16:33:54
【问题描述】:
有些内置 Clojure 函数的行为在我看来不一致,这让我有些懊恼。
我正在尝试这样做:
(let [kwns (namespace (keyword v))]
...)
在 v 可能是 nil 的上下文中。 keyword 函数按我的预期工作(返回 nil),但命名空间抛出 NPE。
我的印象是,在 Clojure 中不经常使用 monad,因为 nil-punning 似乎是惯用的形式(正如 this article 所言长短)。
我预计 kwns 会出现 nil,而不是抛出 NPE。当这种不一致引起它丑陋的头脑时,保持代码清洁的推荐方法是什么......当然,nil 检查我的代码是不是我想要的答案。
【问题讨论】:
标签: clojure