Created
May 19, 2020 19:23
-
-
Save alexandreaquiles/0efc29b96535515a440079ae42ba72a5 to your computer and use it in GitHub Desktop.
High Order Functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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