我正在学习Clojure,我在网上看到了这段代码:
(count (filter #{42} coll))
Run Code Online (Sandbox Code Playgroud)
如上所述,它确实计算了coll中数字42的出现次数.是#{42}功能吗?关于过滤器的Clojure文档说它应该是,因为该片段的工作方式与广告一样.我只是不知道它是如何工作的.如果有人能为我澄清这一点,那就太好了.我对同样事情的解决办法是:
(count (filter #(= %1 42) coll))
Run Code Online (Sandbox Code Playgroud)
为什么我的过滤功能有括号,我在网上找到的片段在过滤功能周围有花括号(#(...)对比#{...})?
(define ..
(lambda (start stop)
(cond ((> (add1 start) stop) (quote ()))
((eq? (add1 start) stop) (sub1 stop))
(else (cons start (.. (add1 start) stop))))))
Run Code Online (Sandbox Code Playgroud)
我已经定义了一个简单的范围函数.目的是为了
(.. 1 5) --> (1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
相反,我的元组中添加了一个奇怪的时期,我不明白为什么:
(.. 1 5) --> (1 2 3 . 4)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.任何帮助表示赞赏