0
respostas

Por que o map não foi executada e o mapv sim?

De acordo com o código:

(defn chega-em-malvado! [hospital pessoa]
  (swap! hospital h.logica/chega-em :espera pessoa)
  (println "após inserir pessoa" pessoa))

(defn simula-um-dia-em-paralelo []
  (let [hospital (atom (h.model/novo-hospital))
        pessoas ["111", "222", "333", "444", "555", "666"]]
    (map #(.start (Thread. (fn [] (chega-em-malvado! hospital %)))) pessoas)
    (.start (Thread. (fn [] (Thread/sleep 2000)
                       (pprint hospital))))
    )
  )

(simula-um-dia-em-paralelo)

O professor explicou que o map não foi executado porque ele é lazy, mas por que nessa ocasião ele é lazy?