小编vim*_*vim的帖子

Clojure基础知识:计算频率

我正在学习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)

为什么我的过滤功能有括号,我在网上找到的片段在过滤功能周围有花括号(#(...)对比#{...})?

clojure

8
推荐指数
1
解决办法
598
查看次数

Lisp中的递归范围增加了一个时期?

(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)

我不明白为什么会这样.任何帮助表示赞赏

lisp scheme

5
推荐指数
1
解决办法
1937
查看次数

标签 统计

clojure ×1

lisp ×1

scheme ×1