5COP101 – Linguagens de Programação Aula 2 – Clojure/LISP

Propaganda
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
5COP101
Linguagens de Programação
Aula 2
Clojure/LISP
Prof. Dr. Sylvio Barbon Junior
Sylvio Barbon Jr – [email protected]
1
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Sumário
1) Razões para Estudar Clojure;
2) Obtendo a Clojure;
3) REPL;
4) Iniciando com a Clojure;
Sylvio Barbon Jr – [email protected]
2
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Razões para Estudar Clojure
- A Clojure utiliza os recursos da JVM (Swing, SWT, “reliability”);
- É um dos dialetos mais populares do LISP;
- Foco em programação funcional em ambientes de desenvolvimento corporativo;
- A Clojure oferece soluções de ambiente concorrentes e paralelização;
- “Mistura” de Ruby + Python + Java + LISP
Sylvio Barbon Jr – [email protected]
3
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Obtendo a Clojure
1) Java Runtime
2) clojure-1.4.0.jar
3) IDE: Leiningen ou Eclipse
* Versão atual é a 1.6
Sylvio Barbon Jr – [email protected]
4
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
REPL
- Ambiente de híbrido de implementação e execução;
- R: Read (código lido como entrada)
- E: Eval (avaliação do código)
- P: Print (saída da interpretação é escrita)
- L: Loop (controles para retornar ao passo “read”)
Sylvio Barbon Jr – [email protected]
5
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
% java -cp clojure-1.4.0.jar clojure.main
Clojure 1.4.0
user=>
public static double average (double[] numbers) {
double sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
(defn average
}
[numbers]
return sum / numbers.length;
(/ (apply + numbers) (count
}
numbers))
(defn average
[numbers]
(/ (apply + numbers) (count numbers)))
Sylvio Barbon Jr – [email protected]
6
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
(average [60 80 100 400])
;= 160
(println (average [60 80 100 400]))
; 160
;= nil
Sylvio Barbon Jr – [email protected]
7
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
Sylvio Barbon Jr – [email protected]
8
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
- Scalar Literals:
– String:
"hello there"
;= "hello there"
– Booleans: true/false
– nil: null (Java)
– Characters:
– Keywords:
\o41
;= \!
(def person {:name "Sandra Cruz"
:city "Portland, ME"})
;= #'user/person
(:city person)
;= "Portland, ME"
Sylvio Barbon Jr – [email protected]
9
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
com
-Iniciando
Scalar Literals:
– Symbols:
– Numbers:
a Clojure
(average [60 80 100 400])
;= 160
– Expressão Regular:
(re-seq #"(\d+)-(\d+)" "1-3")
;= (["1-3" "1" "3"])
Sylvio Barbon Jr – [email protected]
10
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
- Scalar Literals:
– Comentário: “;” ou “#_(xxxxx)”
– Espaço e vírgula: mesma função separar itens.
(= [1 2 3] [1, 2, 3])
;= true
Sylvio Barbon Jr – [email protected]
11
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Iniciando com a Clojure
// Java
public void hello(String name) {
System.out.println("Hello, " + name);
}
; Clojure
(defn hello [name]
(println "Hello," name))
Sylvio Barbon Jr – [email protected]
12
5COP101 – Linguagens de Programação
Aula 2 – Clojure/LISP
Referências
1- Sebesta, R. Conceitos de Linguagens de Programação. 5ª Edição. Porto
Alegre. Bookman, 2003.
2 – Chas Emerick, Brian Carper, Christophe Gand, Clojure Programming.,
O'really, 2012.
Download