Olá,
Seguindo a aula 3, tenho uma sugestão de como extrair em uma outra função o calculo para o desconto, sendo assim:
(ns estoque.aula_3)
;; Predicate Function
(defn aplica-desconto?
[valor-bruto]
(> valor-bruto 100))
(defn calculo-desconto
[valor-bruto]
(let [taxa-de-desconto (/ 10 100)
desconto (* valor-bruto taxa-de-desconto)]
(- valor-bruto desconto)))
;; Common Function
(defn valor-descontado
"Retorna o valor com descon de 10% se o valor bruto for estritamente maior que 100."
[valor-bruto]
(if (aplica-desconto? valor-bruto)
(calculo-desconto valor-bruto)
valor-bruto))
(println
(valor-descontado 1000))
(println
(valor-descontado 100))