Prefisso, semplicemente perché la precedenza degli operatori è esplicita.
FYI, i calcoli più lunghi (in realtà, qualsiasi catena di operazioni) in Clojure possono essere scomposti usando le macro ->
e ->>
. per esempio:.
(-> (get-some-value)
inc
(* 2)
(max 50))
è l'equivalente di:
(max (* (inc (get-some-value)) 2) 50)
Mentre la macro ->
antepone i risultati precedenti agli argomenti dell'espressione successiva, ->>
li aggiunge. Questo è in genere molto utile se utilizzato con funzioni che prevedono collezioni e seq:
=> (->> "some string we want to capitalize"
(partition-by #{\space})
(mapcat #(cons (Character/toUpperCase (first %)) (rest %)))
(apply str))
"Some String We Want To Capitalize"
Fornire servizi per comporre facilmente operazioni più semplici in compositi come questo è uno dei grandi vantaggi di Clojure. Per ulteriori letture, consulta il post di fogus sulla macro ->
, e poi il suo post successivo sull'argomento dei "giustamente" combinatori di mughetti in Clojure .