Domanda

Voglio mantenere un elenco di funzioni di normalizzazione per un testo. Come posso conservare .toLowercase? Stavo pensando a qualcosa del genere:

(def normalizing-functions (list remove-punctuations .toLowerCase))
È stato utile?

Soluzione

Sembra che tu stia creando un elenco di funzioni da applicare a qualcosa su base regolare. il metodo java non è proprio una funzione di clojure in questo senso, sebbene sia davvero facile da avvolgere proprio come faresti se dovessi alimentare la funzione della mappa.

#(. tolowercase %)

Altri suggerimenti

Invece di tenerli in un elenco che dovrai decomprimere in un secondo momento, potrebbe essere più semplice avvolgere .toLowerCase in una funzione clojure (modifica: usando la mia sintassi di Arthur o) e componilo con le funzioni che intendi utilizzare per normalizzare i tuoi dati usando 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))

La macro memfn lo farà in un modo più leggibile.

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

restituirebbe "ciao". (doc memfn) ha i dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top