Share
Embed
Clojure for JS developer
Introduction for js developer at the clojure world.
Jesse cogollo
January 26, 2018
Transcript
29 slides
-
Clojure for JS developer Clojurescripting @jessecogollo Software developer at Advice
Interactive group co-organizer of @medellinjs/@mongodbmedellin/@jsconfco and @avanet member. -
qué significa eso? • Clojure para Jesse Developer • Clojure
para JS developers • Clojurescripting basado en javascripting -
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) -
Qué conoceremos hoy • Clojure ◦ Syntax () ◦ Data
Structures (inmutable) ▪ Strings ▪ Numbers ▪ Naming values (def) ▪ vectors (array) ▪ maps (object) ▪ defining functions -
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 -
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 -
introduction.clj JS: console.log(‘Hello world !!!’); -------------------------------------------------------- Clojure: (println "Hello world
!!!") En este ejercicio vamos a imprimir en la consola la frase `Hello world`. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
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. -
Referencias • https://www.braveclojure.com • https://clojurescript.org/ -> https://clojure.org/guides/learn/syntax • https://clojuredocs.org/ ->
lo mejor para encontrar ejemplos. • https://leiningen.org/ • https://www.meetup.com/Coljure/