sto imparando Clojure, e ho visto questo pezzo di codice in linea:Clojure principi fondamentali: il conteggio frequenze
(count (filter #{42} coll))
E lo fa, come detto, contare le occorrenze del numero 42 in coll. #{42}
è una funzione? La documentazione Clojure sul filtro dice che dovrebbe essere, dal momento che lo snippet funziona come pubblicizzato. Non ho idea di come funzioni. Se qualcuno potesse chiarire questo per me, sarebbe fantastico. La mia soluzione a questo stessa cosa sarebbe stata:
(count (filter #(= %1 42) coll))
Come mai la mia funzione di filtro ha parentesi e il frammento di che ho trovato on-line ha parentesi graffe intorno alla funzione di filtraggio (#(...)
vs. #{...}
)?
Hai visto questa risposta? http://stackoverflow.com/questions/3249334/test-whether-a-list-taintain-a-specific-value-in-clojure – Jonas
No, non ho visto quella risposta. Posso vedere che stanno anche usando bit di codice simili. C'è anche menzione che '(# {x} x)' restituisce 'x'. Semplicemente non capisco cosa sta facendo '# {x}' come una funzione. Non è solo un set? – vim
Vedi la mia risposta. Un set non è solo un set - tra le altre cose è un IFn quindi puoi trattarlo come una funzione. – pete23