如何在Clojure中的列表中存储Java方法

时间:2009-07-30 22:41:10

标签: clojure

我想保留文本的规范化功能列表。我如何存储.toLowercase? 我在考虑这样的事情:

(def normalizing-functions (list remove-punctuations .toLowerCase))

3 个答案:

答案 0 :(得分:3)

看起来您正在制作一份定期应用于某些内容的功能列表。 java方法在这个意义上并不是一个完整的clojure函数 很容易把它包起来,就像你要把它送到地图功能一样。

#(. tolowercase %)

答案 1 :(得分:1)

不是将它们保存在以后必须以某种方式解压缩的列表中,而是将.toLowerCase包装在clojure函数中(编辑:使用my或Arthur的语法)并将其与您计划使用comp标准化数据的功能:

user=> (defn remove-punctuation [st] ...removing puncutation mechanics...)

user=> (defn lower-case [st]
         (.toLowerCase st))

user=> ((comp remove-punctuation lower-case) "HELLO THERE!")
"hello there"

user=> (defn normalize-data [data]
         ((comp remove-punctuation lower-case) data))

答案 2 :(得分:1)

memfn宏将以更易读的方式执行此操作。

(def f (memfn toLowerCase))
(f "Hello")

会返回“你好”。 (doc memfn)有详细信息。