Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clojure for JS developer

Clojure for JS developer

Introduction for js developer at the clojure world.

Jesse cogollo

January 26, 2018
Tweet

More Decks by Jesse cogollo

Other Decks in Technology

Transcript

  1. Clojure for JS developer Clojurescripting @jessecogollo Software developer at Advice

    Interactive group co-organizer of @medellinjs/@mongodbmedellin/@jsconfco and @avanet member.
  2. qué significa eso? • Clojure para Jesse Developer • Clojure

    para JS developers • Clojurescripting basado en javascripting
  3. Qué conoceremos hoy • Que es clojure (prefix notation) •

    leiningen ◦ Entendiendo la estructura del proyecto ◦ REPL • Emacs ◦ CIDER ◦ Paredit • Visual Studio Code ◦ code extension (clojure 0.9.3)
  4. Qué conoceremos hoy • Clojure ◦ Syntax () ◦ Data

    Structures (inmutable) ▪ Strings ▪ Numbers ▪ Naming values (def) ▪ vectors (array) ▪ maps (object) ▪ defining functions
  5. Clojurescripting Ahora sí, lo interesante…. Codigo !!!! 1) instalar Emacs

    ó VSCode 2) lein new clojurescripting && cd clojurescripting 3) en el directorio src/clojurescripting crear los siguientes archivos ◦ introduction.clj ◦ variables.clj ◦ strings.clj ◦ string-length.clj ◦ edit-string.clj (imposible) ◦ numbers.clj ◦ rounding-number.clj ◦ number-to-string.clj (imposible) ◦ if.clj
  6. Cloujurescripting 3) en el directorio src/clojurescripting crear los siguientes archivos

    (continuación) ◦ for.clj ◦ array.clj ◦ filter.clj ◦ accessing-array-values.clj ◦ looping-through-array.clj ◦ objects.clj ◦ object-properties.clj ◦ functions.clj ◦ function-arguments.clj
  7. variables.clj JS: const example = ‘Hello from variable’; console.log(example); --------------------------------------------------------

    Clojure: (def example "Hello from variable") (println example) En este ejercicio vamos a definir una variable, le asignamos un valor y lo imprimimos. O como se diria en clojurian: asignar un nombre a una estructura de datos.
  8. strings.clj JS: const example = ‘Hello world’; console.log(example); -------------------------------------------------------- Clojure:

    (def example (str "Hello " "world")) (println example) En este ejercicio vamos a definir un string, lo vamos a guardar en una variable y lo imprimimos.
  9. string-length.clj JS: const example = ‘Hello from variable’; const length

    = example.length; console.log(length); -------------------------------------------------------- Clojure: (def example "Hello from variable") (println (count example)) En este ejercicio vamos a definir un string, lo vamos a guardar en una variable y lo imprimimos.
  10. edit-string.clj JS: const example = ‘Hello variable’; example = example.replace(‘Hello’,

    ‘Bye’); console.log(example); -------------------------------------------------------- Clojure: (require '[clojure.string :as str]) (def example "Hello variable") (def new-example (str/replace example #"Hello" "Bye")) (println new-example) En este ejercicio vamos a definir un string, lo editamos y lo imprimimos.
  11. number.clj JS: const number = 123; console.log(number); -------------------------------------------------------- Clojure: (def

    variable-integer 123) (def variable-float 1.2) (def variable-ratio 1/5) (println variable-integer) (println variable-float) (println variable-ratio) En este ejercicio vamos a definir un número, lo vamos a guardar en una variable y lo imprimimos.
  12. rounding-number.clj JS: const number = 1.6; const rounded = Math.round(number);

    console.log(rounded); -------------------------------------------------------- Clojure: (def number 1.6) (def rounded (Math/round number)) (println rounded) En este ejercicio vamos a definir un float, y vamos a implementar un round y lo guardamos el resultado en una nueva variable.
  13. number-to-string.clj JS: const number = 256; number = number.toString(); console.log(number);

    -------------------------------------------------------- Clojure: (def number 256) (def number-to-string (str number)) (println number-to-string) En este ejercicio vamos a definir un número, y vamos a generar un string del número.
  14. if.clj JS: const year = 2018; if (year === 2018)

    { console.log(‘Happy new year !!!’); } else { console.log(‘Are you kidding me?’); } -------------------------------------------------------- Clojure: (def year 2018) (if (= year 2018) (println "Happy new year !!!") (println "Are you kidding me?")) En este ejercicio vamos a implementar un if sencillo.
  15. for.clj JS: for(x = 0; i < 10; i++) {

    console.log(‘x’, x); } -------------------------------------------------------- Clojure: (for [x[1 2 3 4 5 6 7 8 9 10]] (println ‘x ’ x)) En este ejercicio vamos a hacer un for simple.
  16. array.clj JS: const array = [‘vector’,’is the new’,’array’]; console.log(array); --------------------------------------------------------

    Clojure: (def array ["vector" "is the new" "array"]) (println array) En clojure vectors, en este ejercicio vamos a definir un vector con tres valores y lo imprimimos en pantalla.
  17. filter.clj JS: const animals = [“dog” “bird”, “cat”]; const noFly

    = example.filter((animal) => animal != “bird”); console.log(noFly); -------------------------------------------------------- (def animals ["dog" "bird" "cat"]) (defn filterAnimal [animal] (not= animal "bird")) (def no-fly (filter filterAnimal animals)) (println no-fly) En este ejercicio vamos a definir un vector con tres animales, le implementamos la función filter para filtrar la lista e imprimir el resultado.
  18. accessing-array-values.clj JS: const animals = [‘dog’, ‘cat’, ‘bird’, ‘rat’]; const

    animal = animals[0]; console.log(animal); -------------------------------------------------------- Clojure: (def animals ["cat" "dog" "bird" "rat"]) (def animal (get animals 0)) (println animal) En este ejercicio vamos a definir un array, y vamos a acceder al primer elemento.
  19. looping-through-array.clj JS: const animals = [‘cat’,’dog’,’rat’]; var animalss = animals.map((animal)

    => `${animal}s`); console.log(animalss); -------------------------------------------------------- Clojure: (def animals ["cat" "dog" "rat"]) (def animalss (map (fn [animal] (str animal "s")) animals)) (println animalss) En este ejercicio vamos a definir un string, lo vamos a guardar en una variable y lo imprimimos.
  20. objects.clj JS: const dog = { animal: true, bark: “Woof…

    Woof !!!”, legs: 4 }; console.log(dog); -------------------------------------------------------- Clojure: (def dog { :animal true :bark "Woof... Woof !!!" :legs 4 }) (println dog) En este ejercicio vamos a definir un objeto ó en Clojurian maps, y lo imprimimos.
  21. object-properties.clj JS: const dog = { animal: true, bark: “Woof---

    Woof !!!”, legs: 4}; const dogBark1 = dog.bark; const dogBark2 = dog[bark]; console.log(dogBark1); console.log(dogBark2); -------------------------------------------------------- Clojure: (def dog { :animal true :bark "Woof... Woof !!!" :legs 4 }) (def dog-bark (get dog :bark)) (println dog-bark) En este ejercicio vamos a definir un string, lo vamos a guardar en una variable y lo imprimimos.
  22. functions.clj JS: function fnHello() { return “Hello world from function”;

    }; console.log(fnHello()); -------------------------------------------------------- Clojure: (defn fnHello [] "Hello world from function") (println (fnHello)) En este ejercicio vamos a definir una función, que retorna un string y lo imprimimos.
  23. function-arguments.clj JS: function fnHello(name) { return `Hello ${name} from function`;

    }; console.log(fnHello(“jesse”)); -------------------------------------------------------- Clojure: (defn fnHello [name] (str "Hello " name " from function")) (println (fnHello "Jesse")) En este ejercicio vamos a definir una función que recibe un parámetro, y retorna un string con un saludo.