Skip to content

Instantly share code, notes, and snippets.

@alexandreaquiles
Created May 19, 2020 19:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandreaquiles/0efc29b96535515a440079ae42ba72a5 to your computer and use it in GitHub Desktop.
Save alexandreaquiles/0efc29b96535515a440079ae42ba72a5 to your computer and use it in GitHub Desktop.
High Order Functions
(ns estoque.desconto)
;Good Practices
;split code into smaller pieces
; reuse
; compose
;readability
;PREDICATE - it returns true or false
;IMPERATIVE x DECLARATIVE
;(defn mais-caro-que-100?
; [valor-bruto]
; (println "called mais-caro-que-100? with" valor-bruto)
; (> valor-bruto 100))
;(mais-caro-que-100? 1000)
;(mais-caro-que-100? 100)
;(def mais-caro-que-100? (fn [valor-bruto] (> valor-bruto 100) ))
(defn valor-descontado
"Retorna o valor descontado que é 90% do valor bruto" ;docstring
[aplica? valor-bruto]
(if (aplica? valor-bruto)
(let [taxa-de-desconto (/ 10 100)
desconto (- 1 taxa-de-desconto)]
(* valor-bruto desconto))
valor-bruto))
;HIGH ORDER FUNCTIONS
;FIRST CLASS CITIZEN - FUNCTIONAL PROGRAMMING LANGUAGE
;IMMUTABILITY - Persistent Data Structures (Vector)
;ANONYMOUS FUNCTION
;(defn sorteado? [_]
; (> (rand) 0.5))
(println (valor-descontado (fn [valor-bruto] (> valor-bruto 100) ) 1000))
;(println (valor-descontado #(> %1 100) 1000))
(println (valor-descontado #(> % 100) 1000))
;(println (valor-descontado (> valor-bruto 100) 1000))
(println (valor-descontado (fn [_] (> (rand) 0.5)) 300))
;(println (valor-descontado #(> (rand) 0.5) 300))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment