Skip to content

AlanNunes/aprendendo-clojure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aprendendo Clojure

Neste repositório tem algumas atividades feitas durante um curso de Clojure para aprender o paradigma funcional.

Algumas funções criadas

Contador

(defn conta
  ([elementos] (conta 0 elementos))
  ([valor elementos]
   (if (seq elementos)
     (recur (inc valor) (next elementos))
     valor)))

(println (conta 0 ["alan" "karynne" "luan" "tainan" "joãozinho" "thalita"]))

Contador utilizando a função loop.

(defn conta
  [elementos]
  (loop
    [valor 0
     elementos-restantes elementos]
    (if (seq elementos-restantes)
      (recur (inc valor) (next elementos-restantes))
      valor)))

(println (conta ["alan" "karynne" "luan" "tainan" "joãozinho" "thalita"]))

Meu mapa (uma iteração utilizando Tail Recursion)

Esta função simula a função map.

(defn meu-mapa
  [funcao sequencia]
  (let [primeiro (first sequencia)]
    (when (not (nil? primeiro))
      (println primeiro)
      (recur funcao (rest sequencia)))))

(meu-mapa println ["alan" "karynne" "luan" "tainan"])
(meu-mapa println (range 10000))

Utilizando defmulti e defmethod

(defmulti hello-world
          (fn [[id lang]] (get lang :name)))

(defmethod hello-world "C#" [params]
  (println "System.Console.WriteLine(\"Hello World!\")"))

(defmethod hello-world "Python" [params]
  (println "print(\"Hello World!\")"))

(defmethod hello-world "Javascript" [params]
  (println "console.log(\"Hello World!\")"))

(defmethod hello-world "Clojure" [params]
  (println "(println \"Hello World!\")"))

About

Atividades feitas durante alguns cursos de Clojure.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published