haw*_*eye 13 lisp scheme elisp predicate clojure
常见的LISP和Emacs LISP具有原子类型谓词.Scheme和Clojure没有它.http://hyperpolyglot.wikidot.com/lisp
是否存在设计原因 - 或者它不是包含在API中的基本功能?
mik*_*era 14
在Clojure中,原子谓词并不那么重要,因为Clojure强调各种其他类型的(不可变的)数据结构,而不是关注cons单元/列表.
它也可能引起混淆.如果给出一个hashmap,一个集合或一个向量,你会如何期望这个函数的行为?还是一个代表一些复杂的可变数据结构的Java对象?
名称"atom"也用于完全不同的东西 - 它是Clojure 管理共享,同步,独立状态的核心并发机制之一.
在The Little Schemer一书中,atom?定义如下:
(define (atom? x)
(and (not (pair? x))
(not (null? x))))
Run Code Online (Sandbox Code Playgroud)
注意到它null不被视为原子,正如其他答案所暗示的那样.在所提到的书中atom?使用很多,特别是在编写处理列表列表的程序时.
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |