草庐IT

clojure-contrib

全部标签

Java/clojure : Multiple character delimiter, 并保留分隔符

我正在用clojure开发一个项目,它可以与任何java类互操作,所以我的问题的答案可能是java或clojure。基本上,我需要能够根据给定的分隔符(多于一个字符)将字符串拆分成组件,但同时保留分隔符。例如:splitting"test:test:test"on":"=>["test"":""test"":""test"]splitting"::test::test::"on"::"=>["::""test""::""test""::"]我使用的壁橱是使用clojure的clojure.string/split,但它实际上并不返回分隔符。第二个最接近的是使用StringTokeniz

java - Clojure 中的库函数与 Java 方法

在阅读“Clojure编程”时,我注意到在Clojure中有其他方法可以执行某些操作。例如,假设我们需要将字符串的所有字符转换为其大写变体。我们可以使用.toUpperCase:user>(.toUpperCase"foo");;=>"FOO"以及clojure.string/upper-case:user>(clojure.string/upper-case"foo");;=>"FOO"虽然clojure.string/upper-case是一个函数,我们可以这样对待它:user>(mapclojure.string/upper-case["foo""bar""baz"]);;=>(

java - 尝试从 Clojure 填充 Java 类时出现 "No matching ctor found"

我在尝试从Clojure填充Java类时收到“未找到匹配的构造函数”错误。我想从Clojure填充这个类。importjava.util.Date;publicclassAccount{Account(){acct_num=0;trans_type='U';trans_amt=0.00;cur_bal=0.00;last_update=null;}publicintacct_num=0;publicchartrans_type;publicdoubletrans_amt=0.00;publicdoublecur_bal=0.00;publicDatelast_update;}我可以导入

java - Clojure 中的默认十进制文字不是 BigDecimal 类型有什么原因吗?

我了解到Clojure阅读器将带后缀“M”的十进制文字(如1.23M)解释为BigDecimal。而且我还知道没有“M”的十进制数字会变成Javadouble。但我认为普通十进制数是BigDecimal会更好,并且依赖于主机的十进制数有后缀,比如1.23H。因此,当数字由于IEEEdouble的精度限制而损坏或被截断时,我们可以很容易地注意到该数字是有精度限制的。另外,我认为更简单的表达应该是独立于主机的。除了时间性能之外,Clojure将文字十进制解释为Javadouble有什么原因吗?另外,我不认为时间性能是一个答案,因为它不是C/C++,并且可以像“1.23H”一样实现声明依赖于

java - 如何在 Clojure 中使 Java 类不可变?

我想在clojure中包装java的PriorityQueue类,以便在我的程序的另一部分中使用。我想弄清楚的是,是否有任何方法可以以lispy方式执行此操作并使优先级队列不可变。有什么好的方法可以做到这一点,还是我只是将PriorityQueue用作可变数据结构会更好? 最佳答案 我认为没有一种简单的方法可以将可变数据结构包装为不可变数据结构。当新版本可以巧妙地与旧版本共享数据时,不可变数据结构变得高效,如果不访问PriorityQueue的内部结构,我真的看不出如何做到这一点。如果你真的想要一个持久化的优先队列thisthrea

java - Clojure 方法缺失

有人知道如何在Clojure中实现method_missing(类似于Ruby)吗?例如(defnmethod_missing[name&args](foonameargs))如果使用得当,它将对DSL非常有用。提前致谢! 最佳答案 在Ruby中,method_missing是元编程的主要结构之一。它与Ruby的面向对象结构紧密结合,在“元类”的类中动态创建方法。这是可以做到的,因为在Ruby中类也是对象。由于Clojure是一种函数式语言,因此模仿这种Rubyism意义不大。然而,Lisps(如Clojure)的基本习语之一是代码

Java -> Clojure -> Java

我正在尝试使用Clojure作为宿主Java程序的脚本语言。这个想法是最终用户将能够编写调用特定领域JavaAPI的Clojure脚本代码。在运行时,宿主Java程序将评估最终用户的Clojure脚本(它将依次调用域API)。所以我从一个非常简单的原型(prototype)开始探索地形。域packagea.problem.domain;publicclassDomain{publicDomain(){}publicStringdefaultMsg(){return"default";}publicStringpassBackMsg(Strings){returns;}}宿主Java程序

java - PostgreSQL/Clojure 的驱动程序问题

我正在尝试访问Clojure中的Postgres数据库。我发现了大量使用数据库的项目示例,像这样设置数据库:(defdb{:classname"org.postgresql.Driver":subprotocol"postgresql":subname"//localhost/testdb":username"postgres":password"postgres"})然后我尝试像这样访问数据库:(sql/with-connectiondb(sql/with-query-resultsrecs["select*fromasdf"](doseq[recrecs](printlnrec))

java - 如何在 Clojure REPL 中要求一个 jar 文件?

很容易require来自clojure的包:user=>(require'clojure.core)nil但是我怎么能要求.jarClojure中的文件?(我正在尝试学习lein。Leiningen对于大型项目而非小型脚本很有用。所以我想弄清楚在我的Clojure脚本和REPL中使用jar包的最佳方法是什么.) 最佳答案 虽然可以在运行时借助Pomegranate将jar添加到应用程序图书馆,这是非常不鼓励的:它对外部隐藏了依赖关系,最终用户不会知道他们需要它来运行代码。jar本身可以依赖于其他jar文件(因此给最终用户带来压力)我

java - 将子进程输出直接通过管道传输到标准输出 (java/clojure)

我正在寻找一种在clojure中启动子进程的方法(java可以),并将其输出实时直接发送到stdout。我能找到的最接近的是clojure的Conch库,它允许您将输出发送到*out*,但在进程运行完成之前它不会实际显示输出. 最佳答案 不确定是否有方便的Clojure包装器:(->>(..RuntimegetRuntime(exec"ls")getInputStream)java.io.InputStreamReader.java.io.BufferedReader.line-seq(mapprintln))实践中值得注意的是,需