标签: clojure

如何在Clojure中将LazySeq of Characters转换为String?

比方说,我有一个LazySeq的java.lang.Character中的像

(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Run Code Online (Sandbox Code Playgroud)

如何将其转换为String?我已经尝试过显而易见的事了

(String. my-char-seq)
Run Code Online (Sandbox Code Playgroud)

但它会抛出

java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Run Code Online (Sandbox Code Playgroud)

我认为因为String构造函数需要原始char []而不是LazySeq.那么我尝试了类似的东西

(String. (into-array my-char-seq))
Run Code Online (Sandbox Code Playgroud)

但它抛出同样的异常.现在的问题是into-array返回java.lang.Character []而不是原始char [].这很令人沮丧,因为我实际上是这样生成我的角色序列

(map #(char (Integer. %)) seq-of-ascii-ints)
Run Code Online (Sandbox Code Playgroud)

基本上我有一个表示ASCII字符的seq的整数; 65 = A等.您可以看到我明确使用原始类型强制函数(char x).

这意味着我的map函数返回一个原始char,但Clojure map函数整体返回java.lang.Character对象.

types clojure map coercion primitive-types

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

关于CLR的Clojure

我有兴趣在CLR上调查Clojure.我看到有一个端口 -但我总是对这些二等公民有点怀疑(即他们没有原始的稳定性或功能).如果一般人们发现CLR上的Clojure不成熟,我就不太愿意花这么多时间 - 我现在根本没有时间或精力去解决一堆问题.另一方面,如果CLR上的Clojure看起来很好吃,我今天就开始潜水吧!

在CLR上有没有关于Clojure的实际经验?

任何有关CLR版本的建议和/或其他帮助也将受到赞赏.

clr clojure clojureclr

54
推荐指数
2
解决办法
7343
查看次数

在Clojure中预先添加到矢量的惯用方法是什么?

在列表前面很容易:

user=> (conj '(:bar :baz) :foo)
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)

附加到矢量很简单:

user=> (conj [:bar :baz] :foo) 
[:bar :baz :foo]
Run Code Online (Sandbox Code Playgroud)

在获取向量时,我如何(惯用)前置到向量?这不起作用,因为它返回seq,而不是向量:

user=> (cons :foo [:bar :baz])     
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)

这很难看(IMVHO):

user=> (apply vector (cons :foo [:bar :baz])) 
[:foo :bar :baz]
Run Code Online (Sandbox Code Playgroud)

注意:我基本上只想要一个可以附加和前置的数据结构.附加到大型列表应该有很大的性能损失,所以我想到了矢量..

vector append clojure prepend

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

ref-set vs commute vs alter

在Clojure中设置ref值的3种方法有什么区别?我已经多次阅读过关于ref-set,commute和alter的文档.我很困惑哪些时候可以使用哪些.有人可以简要介绍一下这些差异是什么以及为什么需要这些差异?

clojure

54
推荐指数
1
解决办法
4187
查看次数

并发模型:Erlang vs Clojure

我们将使用Clojure编写并发程序,该程序将从大量传入邮件中提取关键字,这些邮件将与数据库进行交叉检查.

我的一个队友建议使用Erlang编写这个程序.

在这里,我想要注意一些我对函数式编程不熟悉的东西,所以我有点怀疑clojure是编写这个程序的好选择,还是Erlang更适合.

concurrency erlang clojure

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

如何在clojure中停止jetty服务器?

我正在使用ring和clojure编写Web应用程序.我使用jetty适配器开发服务器和emacs/SLIME for IDE.虽然wrap-reload确实有帮助,但run-jetty会阻止我的粘贴会话,我希望能够随意启动/停止它,而无需在单独的终端会话中运行它.理想情况下,我想定义一个服务器代理和函数start-server和stop-server,它们将启动/停止代理中的服务器.这可能吗?

jetty clojure ring

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

Clojure不是零检查

在Clojure nil?检查为零.如何检查不是零?

我想做Clojure相当于以下Java代码:

if (value1==null && value2!=null) {
}
Run Code Online (Sandbox Code Playgroud)

后续行动:我希望不用零检查,而不是用它包裹not.if有一个if-not对应物.是否有这样的对应物nil??

clojure

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

将元素放在集合的尾部

我发现自己做了很多:

(concat coll [e]) 其中coll是一个集合,而ea是一个单独的元素.

在Clojure中有没有这样做的功能?我知道conj对矢量做的最好,但我不知道前面会使用哪种coll.例如,它可以是矢量,列表或排序集.

collections clojure

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

什么是Clojure的命名约定?

谁能解释或指出我在哪里可以找到clojure的命名约定:

  1. 文件名
  2. 函数(据我所知,函数名称只是虚线分隔值)
  3. 变量

clojure naming-conventions

52
推荐指数
3
解决办法
1万
查看次数

Clojure应用程序中的资源

我在我的Clojure项目(GUI应用程序)中使用Leiningen,并在项目根目录下创建了一个"resources"目录来保存我的应用程序使用的图像.

当我在测试期间在本地运行我的应用程序时,我使用相对路径"resources/logo.png"获取图像,这样可以正常工作.但是当我使用Leiningen构建一个uberjar时,Leiningen将来自资源文件夹的文件放在JAR的根文件夹中,因此我对资源文件的引用不再起作用.

使用Leiningen访问这样的资源的正确方法是什么?

clojure leiningen

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