Как хранить методы Java в списке в Clojure - PullRequest
3 голосов
/ 31 июля 2009

Я хочу сохранить список нормализующих функций для текста. Как мне сохранить .toLowercase? Я думал о чем-то вроде этого:

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

Ответы [ 3 ]

3 голосов
/ 31 июля 2009

Похоже, вы составляете список функций для регулярного применения к чему-либо. в этом смысле Java-метод не совсем замыкающий легко обернуть его так же, как если бы вы собирались передать его в функцию карты.

#(. tolowercase %)
1 голос
/ 27 апреля 2010

Макрос memfn сделает это более читабельным способом.

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

вернет "привет". (doc memfn) имеет подробную информацию.

1 голос
/ 31 июля 2009

Вместо того, чтобы хранить их в списке, который вам придется распаковать позже, может быть проще обернуть .toLowerCase в функцию clojure (edit: используя синтаксис 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...