89得票5回答
如何使Clojure函数接受可变数量的参数?

我正在学习Clojure,尝试定义一个可以接收可变数量参数(即“variadic”函数)并将它们加总的函数(就像+操作一样)。然而,我不知道如何实现这样的函数。 我所能做的只有: (defn sum [n1, n2] (+ n1 n2)) 当然,这个函数仅接受两个参数。请教我如何让它接受...

88得票6回答
生成惰性排列

我正在寻找一种算法,以这样的方式生成集合的排列,我能够在Clojure中创建一个惰性列表。即我希望迭代一系列排列,每个排列在请求时才计算,并且所有排列不必同时存储在内存中。 或者,我正在寻找一种算法,它可以给出集合的“下一个”排列,以便重复调用函数的输出将按某个顺序循环遍历原始集合的所有排...

88得票5回答
Clojure的Emacs/Swank/Paredit温和教程

我要开始使用 Emacs 来编写 Clojure/Lisp。请问我需要在 Emacs 上设置哪些内容才能实现以下功能? 自动匹配/生成相应的闭合括号 自动缩进 Lisp/Clojure 风格,而不是 C++/Java 风格 语法高亮 调用 REPL 将文件中的一部分代码加载到 REPL 中...

88得票2回答
为什么Clojure有5种定义类的方式而不是只有一种?

Clojure有gen-class、reify、proxy,还有deftype和defrecord等定义新类似数据类型的方法。对于一个重视语法简洁、反感不必要复杂性的语言来说,这似乎是一种异常情况。有人能解释一下它为什么会这样吗?Common Lisp风格的defclass是否已经足够了呢?

86得票4回答
Clojure - 命名参数

Clojure是否有命名参数?如果有,请提供一个简单的示例。

85得票4回答
匿名函数简写

使用短符号 #(..) 的匿名函数有一些我不太明白的地方。以下方法可行:REPL> ((fn [s] s) "Eh") "Eh" 但这个不行:REPL> (#(%) "Eh") 这个可以正常工作:REPL> (#(str %) "Eh") "Eh" 我不理解的是为什么 (...

85得票10回答
我该如何运行我创建的.clj Clojure文件?

我在Linux上写了一个小的“hello world”程序,以便开始使用这种语言。 现在我想运行它并查看输出结果。 我应该如何运行这段代码? 我应该运行哪个命令?

84得票6回答
建造一台LISP机器需要多少个基本构件?十个、七个还是五个?

在这个网站上,他们说有10个LISP原语。这些原语是:atom, quote, eq, car, cdr, cons, cond, lambda, label, apply。 http://hyperpolyglot.wikidot.com/lisp#ten-primitives Ste...

83得票8回答
性能和Java互操作性:Clojure vs. Scala

我已经阅读了有关Clojure vs. Scala的各种说明,尽管我意识到两者都有其适用场景。当比较Clojure和Scala时,有一些考虑因素我还没有完全明白: 1.) 这两种语言中哪一个通常更快?我知道这会因语言特性而异,但总体性能的一般评估会很有帮助。例如:我知道Python字典非常快...

81得票4回答
如何列出命名空间中的函数?

我想知道如何列出Clojure命名空间中的所有函数。我已经做了一些研究,但还没有达到目标。我已经找到了使用show方法列出Java类方法的方法:(show java.awt.Graphics) 我想列出Clojure命名空间的函数,我已经尝试使用show方法,就像这样:(show 'cloju...