标签: clojure

懒洋洋地产生排列

我正在寻找一种算法来生成集合的排列,这样我就可以在Clojure中创建它们的惰性列表.即我想迭代一个排列列表,其中每个排列都不计算,直到我请求它,并且所有排列不必一次存储在内存中.

或者我正在寻找一种给定某个集合的算法,它将返回该集合的"下一个"排列,以这种方式在自己的输出上重复调用该函数将循环遍历原始集合的所有排列,一些订单(订单无关紧要).

有这样的算法吗?我见过的大多数排列生成算法都倾向于一次性生成它们(通常是递归的),这些算法不能扩展到非常大的集合.Clojure(或其他函数式语言)中的实现会有所帮助,但我可以从伪代码中找出它.

algorithm functional-programming clojure combinatorics

83
推荐指数
2
解决办法
2万
查看次数

关于性能和Java互操作性:Clojure与Scala

我已经阅读过Clojure与Scala的各种报道,而我发现两者都有自己的位置.有一些考虑因素我没有得到关于何时比较Clojure和Scala的完整解释:

1.)这两种语言中的哪一种通常更快?我意识到这会因语言功能而异,但对性能的一般评估会有所帮助.例如:我知道Python字典非常快.但作为一个整体,它是一个比Java慢语.我不想和Clojure一起走在路上遇到这个问题.

2.)与Java的互操作性如何?到目前为止我所读到的只是Scala具有本机集合类型,这使得与大型Java代码库集成有点笨拙,而Clojure遵循一种简单的以Iterable/Iterator为中心的方式来与Java类进行交互.还有更多想法/细节吗?

最终,如果它在clojure和scala之间足够接近,我可能会尝试它们.关于Clojure的一件事是语言看起来简单.但话说回来,Scala有一个非常灵活的类型系统.但是,我知道Scala很快(基于多个个人帐户).所以,如果Clojure明显变慢了:我想早点知道,而不是迟早.

java performance jvm scala clojure

82
推荐指数
6
解决办法
3万
查看次数

为什么Clojure有5种方法来定义一个类而不是一个?

Clojure具有gen-class,reify,proxy以及deftype和defrecord来定义新的类类数据类型.对于一种重视句法简洁性并憎恶不必要的复杂性的语言来说,这似乎是一种失常.有人可以解释为什么会这样吗?Common Lisp风格的defclass能够满足吗?

clojure clojure-java-interop

81
推荐指数
2
解决办法
1万
查看次数

使用命令行界面构建Clojure应用程序?

我刚刚开始使用Clojure(来自Ruby),我想用命令行界面构建一个小应用程序.如何处理CL的输入/输出?

我注意到有一个clojure.contrib.command-line,但文档很小.

http://github.com/richhickey/clojure-contrib/blob/ffa868411cda6c617105b52b4f6f9e0f37ee8c24/src/clojure/contrib/command_line.clj

clojure clojure-contrib

78
推荐指数
4
解决办法
1万
查看次数

什么是::用于clojure?

我理解Clojure中的关键字是:关键字.但是::用于什么?为什么看起来它有绑定?

user=> :foo
:foo
user=> ::foo
:user/foo
Run Code Online (Sandbox Code Playgroud)

clojure

78
推荐指数
2
解决办法
7081
查看次数

Clojure - 命名参数

Clojure是否有命名参数?如果是这样,请您提供一个小例子吗?

clojure

77
推荐指数
3
解决办法
2万
查看次数

如何使Clojure函数采用可变数量的参数?

我正在学习Clojure,我正在尝试定义一个函数,该函数接受可变数量的参数(一个可变函数)并将它们相加(是的,就像+过程一样).但是,我不知道如何实现这样的功能

我能做的一切是:

(defn sum [n1, n2] (+ n1 n2))

当然,此功能仅需要两个参数和两个参数.请教我如何接受(和处理)未定义数量的参数.

lisp procedure function clojure

77
推荐指数
4
解决办法
4万
查看次数

构建LISP机器需要多少原语?十,七,五?

在这个网站上,他们说有10个LISP原语.原语是:atom, quote, eq, car, cdr, cons, cond, lambda, label, apply.

http://hyperpolyglot.wikidot.com/lisp#ten-primitives

Stevey估计有七个(或五个):

它是LISP概念纯度的一部分:你只需要七个(或五个?)原语来构建整个机器. http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html

构建LISP机器的最小基元数是多少(即可以在LISP代码上运行eval/value函数的东西)?(他们是哪一个?)

(我明白你可以没有生活atom, label and apply)

lisp primitive scheme clojure common-lisp

76
推荐指数
6
解决办法
1万
查看次数

Android上的Clojure

是否可以在Clojure中编写Android应用程序?如果有可能,任何人都可以推荐一本好的教程或书吗?

android clojure

76
推荐指数
5
解决办法
2万
查看次数

如何在向量中找到项目的索引?

任何想法????应该是什么?内置了吗?完成这项任务的最佳方法是什么?

(def v ["one" "two" "three" "two"])

(defn find-thing [ thing vectr ]
  (????))

(find-thing "two" v) ; ? maybe 1, maybe '(1,3), actually probably a lazy-seq
Run Code Online (Sandbox Code Playgroud)

clojure

75
推荐指数
6
解决办法
5万
查看次数