Escolar Documentos
Profissional Documentos
Cultura Documentos
g r e a t e r : : Bool
g r e a t e r = ( answer > 7 1 )
yes : : Bool
yes = True
1
Definição de funções
square : : I n t −> I n t
square x = x * x
2
Aplicação de Funções
square 5 −− = 25
square ( 5 ) −− = 25
allEqual 1 2 3 −− = F a l s e
allEqual ( 1 , 2 , 3 ) −− ERRO ! ! !
allEqual ( 1 ) ( 2 ) ( 3 ) −− = F a l s e
3
Prova de Propriedades
Exemplo
addD a b = 2 * ( a+b )
= 2 * ( b+a ) = addD b a
4
Em uma linguagem imperativa
int b = 1 ;
...
int f ( int x ) {
b = x;
return ( 5 )
}
Então ...
addD (f 3) b == addD b (f 3) ?
5
Exemplo
• as vendas semanais são dadas pela função vendas :: Int −> Int
• total de vendas da semana 0 à semana n?
vendas 0 + vendas 1 + ... + vendas (n−1) + vendas n
Definição de totalVendas
totalVendas : : I n t −> I n t
totalVendas n
| n == 0 = vendas 0
| otherwise = totalVendas ( n−1) + vendas n
6
Recursão
maxVendas : : I n t −> I n t
maxVendas n
| n == 0 = vendas 0
| otherwise = maxi ( maxVendas ( n − 1 ) )
( vendas n )
7
Casamento de padrões
totalVendas : : I n t −> I n t
totalVendas 0 = vendas 0
totalVendas n = totalVendas ( n−1) + vendas n
8
Casamento de Padrões
9
Regras para padrões
10
Notação
f n + 1 −− = ( f n ) + 1
f (n + 1)
2 + 3
(+) 2 3
maxi 2 4
2 ’ maxi ’ 4
11
Erros comuns
square x = x
*x
parse e r r o r on i n p u t ’ * ’
funny x = x +
1
parse e r r o r ( p o s s i b l y i n c o r r e c t i n d e n t a t i o n )
Funny x = x +1
Not i n scope : data c o n s t r u c t o r ’ Funny ’
12
Exercícios
13
Definições locais
sumSquares x y = sq x + sq y
where sq z = z * z
sumSquares x y = l e t sqX = x * x
sqY = y * y
i n sqX + sqY
14
Definições locais (cont.)
15
Exercício
Exercícios
16
Bibliografia
17