1
resposta

Dúvida no código

Olá Tudo bem? Na aula o professor colocou o seguinte código:

(defn mais-caro-que-100?
  [valor-bruto]
  (println "deixando claro invocação de mais-caro-que-100?")
  (> valor-bruto 100))

(defn valor-descontado
  "Retorna o valor com desconto de 10% se deve aplicar desconto."
  [aplica? valor-bruto]
  (if (aplica? valor-bruto)
    (let [taxa-de-desconto (/ 10 100)
          desconto         (* valor-bruto taxa-de-desconto)]
      (- valor-bruto desconto))
    valor-bruto))

(println "função como parâmetro")
(println (valor-descontado mais-caro-que-100? 1000))
(println (valor-descontado mais-caro-que-100? 100))

O que está me causando dúvidas é o seguinte: em nenhum momento ele definiu a função aplica? mas ainda assim ela funciona e estou sem entender como uma função que não foi definida em lugar nenhum funciona de maneira correta. Alguém consegue me dar uma luz na explicação? Obrigada

1 resposta

aplica? é o primeiro parâmetro recebido da função valor-descontado. Note que ao invocar valor-descontado nas duas últimas linhas, a função mais-caro-que-100é passada como parâmetro.