Acho que temos um problema no exemplo de código desta aula.
Da forma como está, estamos chamando de forma redundante o que está no threading last e a última linha:
(defn preco-total-do-produto [produto]
(* (:quantidade produto) (:preco produto)))
(defn total-do-pedido
[pedido]
(->> pedido
vals
(map preco-total-do-produto)
(reduce +))
(reduce + (map preco-dos-produtos pedido)))
(println (total-do-pedido pedido))
Como deveria estar:
(defn preco-total-do-produto [produto]
(* (:quantidade produto) (:preco produto)))
(defn total-do-pedido
[pedido]
(->> pedido
vals
(map preco-total-do-produto)
(reduce +)))
(println (total-do-pedido pedido))