No fonte:
(defn starta-thread-de-chegada
([hospital]
(fn [pessoa] (starta-thread-de-chegada hospital pessoa)))
([hospital pessoa]
(.start (Thread. (fn [] (chega-sem-malvado! hospital pessoa))))))
(defn simula-um-dia-em-paralelo-com-mapv-extraida
[]
(let [hospital (atom (h.model/novo-hospital))
pessoas ["111", "222", "333", "444", "555", "666"]]
(mapv (starta-thread-de-chegada hospital) pessoas)
(.start (Thread. (fn [] (Thread/sleep 8000)
(pprint hospital))))))
(simula-um-dia-em-paralelo-com-mapv-extraida)
Não compreendi de onde vem o parâmetro pessoa na primeira variação da função starta-thread-de-chegada (com aridade 1).
Entendi que é uma high order function (starta-thread-de-chegada) que retorna uma função, porém o parametro pessoa dentro da função (fn [pessoa]
) realmente eu não estou conseguindo entender, de onde vem pois o unico parâmetro recebido foi [hospital]
.
Estou perdido! rsrs