Oficina Introdução ao Clojure

No Calango

As ideias do Lisp (incluindo Racket, Scheme, Clojure etc.)

1) A sintaxe é muito simples.

As programas são feito de listas.


(1 2 3)

E listas dentro as listas


(1 2 (3 4))

Expressões também são listas. Sempre o nome do operador ou função como o primeiro elemento do lista e as operandos / argumentos depois.

(+ 2 2)

(* 3 (+ 2 5))

Exerciso 1.

  • 1.1 - Traduze esta expressão em Lisp e avalia no seu computador

3 * (5 + 9)

; Escreve aqui
  • 1.2 - E isso?

4 * (1 + 2 + 3 + 4 + 5 + 6) * 5 / 10

; Escreve aqui

Sua programa em Lisp e nada mais do que um series destas expressões.

Por exemplo, o expressão condicional utilizando "if" :


(if (= 0 1) "sim" "nao")

(= 0 1)

(= 1 1)

Strings

Teste de igualidade :


(= "abc" "abc")

(= "abc" "abcd")

Concatenar :


(str "abc" "def")

Substring :


(subs "Calango Hacker Clube" 0 7)

Exerciso 2.

  • 2.1 - Escrever um teste se a primeiro 4 caracteres de uma string saos iguais.

; Escreve aqui

Expressoes e Funcoes

Criando um nome, e vinculando um valor com o nome utilizar o "let"


(let [x 15]
(if (< 10 x) "sim" "nao") )

Obs. : o "let" cria um "escopo" dentro sue expressao. O nome x 'e so definido dentr deste escopo. Como sempre em Lisp, o tamanho do expressao "let" 'e definido pela as parenteses.

Criando uma função também com estrutura de lista ... utilizando o função "defn"


(defn f [x] (* x x))
(f 8)

Exerciso 3.

  • 3.1 - Criar um função que receber dois argumentos strings e responde se eles tem as primeiros 4 caracteres iguais.

Eg.


(comp4 "askhkjasdhk" "askhbhdifdsbkfbkdsjb") -> true
(comp4 "askhfdfsdkfbksdj" "lhsdlfsbdk") -> false

; Escreve aqui
  • 3.2 - Adaptar sua função pra receber as dois argumentos e um numero n e teste as primeiros n caracteres.

; Escreve aqui

Vai ao Pagina 2