Você está na página 1de 1

Universidade Federal do Rio Grande do Sul

Instituto de Informtica
Departamento de Informtica Terica

INF05501 Teoria da Computao N


Turma B Prof. Rodrigo Machado

Lista de Exerccios Prticos (Clculo Lambda)

1. Acesse http://www.inf.ufrgs.br/~rma/index.php?section=software&lang=en e faa o download do


software Simulador de Clculo Lambda, verso Linux (64 bits)

2. Experimente com o sistema, e tente entender as codificaes vistas em aula, em particular


valores e operaes booleanas: true, false, if-then-else, not, and
nmeros naturais e operaes aritmticas: 0,1,2, succ, add, mult
operaes de comparao de nmeros naturais: isZero
pares: pair, fst, snd
nmeros naturais e operaes aritmticas (utilizando pares): pred (saturando em zero)
listas: empty, cons, first, rest, isEmpty
operador de ponto fixo (recurso)

2. Utilizando o sistema, codifique as seguintes operaes utilizando termos lambda:

1. operaes booleanas: XOR, OR (inclusivo)


2. operaes aritmticas (nmeros naturais): SUB (a-b), saturando em 0 se b>a
3. operaes de comparao de nmeros naturais: EQUAL (a==b?), LESS (a<b?)
4. operaes de manipulao de listas:

1. MAP : (a b) (Lista de a) (Lista de b)


Ex: MAP (\x.add 3 x) (cons 2 (cons 4 empty)) ==> (cons 5 (cons 7 empty))

2. FILTER : (a Bool) (Lista de a) (Lista de a)


Ex: FILTER (isZero) (cons 1 (cons 0 (cons 3 (cons 0 empty)))) ==>
(cons 0 (cons 0 empty))

3. FOLD : (a b b) b (Lista de a) b
Ex: FOLD ADD 0 (cons 2 (cons 5 (cons 1 empty))) ==> 8
(troca cons pelo 1 argumento, empty pelo 2 argumento)

5. aritmtica inteira:
1. nmeros inteiros: 0, 1, -1, 2, -2, 3, -3, ...
2. teste de zero
3. teste de negativo
4. teste de positivo
5. inverso aditivo: (a => -a)
6. adio inteira

Você também pode gostar