Clojure
Helder Costa
Renan Henker
Introdução
●
●
●
Linguagem criada em 2007, por Rich Hickey.
Demorou cerca de 2 anos e meio para publicá-la e a maior parte desse tempo sem financiamento. Linguagem de Propósito geral, propícia à
Sistemas Concorrentes - Software Transactional Memory .
–
Linguagem de script.
–
Infraestrutura à programação multithread.
–
Estruturas de dados persistentes.
Introdução
●
Um novo Lisp.
–
●
Paradigma Funcional.
Linguagem Compilada, gerando o bytecode a ser interpretado:
–
JVM (Interpretador de Java)
–
CLR (Interpretador de .NET)
–
JavaScript Engine (Interpretador JavaScript)
–
ActionScript VM (Plataforma do Adobe Flash Player)
Tipos de Dados
●
Possui tipagem dinâmica.
●
A maioria dos tipos são imutáveis.
●
Assim como Java, tudo em Clojure é um
Objeto.
Tipos de Dados
●
Números
–
Long
●
–
Ratio (Relação)
●
–
(type, 7/2) retorna clojure.lang.Ratio
BigInt
●
–
(type, 5) retorna java.lang.Long
(type, 40000000000000) retorna clojure.lang.BigInt
Double
●
(type, 4.4444) retorna java.lang.Double
Tipos de Dados
●
Strings
–
●
Caracter
–
●
(type, \s) retorna java.lang.Character
Booleano
–
●
(type, “maria”) retorna java.lang.String
(type, true) retorna java.lang.Boolean
Nulo
–
É representado pela palavra 'nil'
Tipos de Dados
●
Coleções
–
Listas
●
●
–
Vetores
●
–
Uma lista é declarada entre parênteses.
(list 10 20 30)
(10 20 30)
(type , [“maria” 53 \s]) retorna clojure.lang.PersistentVector
Tabelas Hash
●
●
Chave → Valor
(type, {\a 10 \b 20}) retorna clojure.lang.ArrayMap
Tipos de Dados
●
StructMaps
–
Variação da tabela hash.
–
Pode ser declarado de duas maneiras:
●
(def notas (create-struct :prova1 :prova2 :trabalho))
–
–
●
(struct-map notas :prova1 3 :prova2 9 :trabalho 10) ou
(struct