Ferramentas do usuário

Ferramentas do site


temas:programacao:fp

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
temas:programacao:fp [2015/10/11 19:49]
phil
temas:programacao:fp [2015/10/11 20:39]
phil [4) Funções são cidadãos do primeiro classe]
Linha 139: Linha 139:
 ==== 3) Recursividade é sua jeito de navegar dentro as estruturas ==== ==== 3) Recursividade é sua jeito de navegar dentro as estruturas ====
  
-...+    (define (tamanho xs)  
 +        (if (empty? xs) 0 (+ 1 (tamanho (cdr xs))))) 
 + 
 +    (tamanho '(1 2 3 4 5)) 
 +     
 + 
 +    (define (soma xs)  
 +        (if (empty? xs) 0 (+ (car xs) (soma (cdr xs))))) 
 +         
 + 
 +    (soma '(1 2 3 4 5))     
 + 
 +=== Exerciso 4.=== 
 + 
 +4.1 - Escrever um funciao pra multiplicar cada elemento duma lista vezes 3 
 + 
 +4.2 - Escrever um funciao pra produzir o ultimo elemento duma lista. 
 + 
 +4.3 - Escrever um funciao pra reversar uma lista, eg. '(1 2 3 4 5) -> '(5 4 3 2 1)
  
 ==== 4) Funções são cidadãos do primeiro classe ==== ==== 4) Funções são cidadãos do primeiro classe ====
  
-...+    (define (mult2 x) (* 2 x)) 
 + 
 +Podemos passar elas como argumentos : 
 +     
 +    (define (mymap f xs)  
 +      (if (empty? xs) '() 
 +          (cons (f (car xs)) (mymap f (cdr xs))))) 
 + 
 +    (mymap mult2 '(1 2 3 4 5)) 
 + 
 +Podemos produzir elas utilizando "curry" pra "customizar" funções que já existe : 
 + 
 +    (mymap (curry * 2) '(1 2 3 4 5)) 
 + 
 +Como nos queremos passar muitos pequenos funções como argumentos para outros funções, temos a capacidade definir funções anônimos com a "lambda". 
 + 
 +    (mymap (lambda (x) (* x 3)) '(1 2 3 4 5)) 
 +         
 +A biblioteca padrão contem varias funções pra tratar listas com outras funções 
 + 
 +    (map (curry * 4) '(1 2 3 4 5)) 
 + 
 +    (filter (lambda (x) (< x 5)) (range 10)) 
 + 
 +    (foldr (lambda (a b) (* a b)) 1 '(1 2 3 4 5)) 
 +     
 +=== Exerciso 5.=== 
 + 
 +Escrever o função que somar as números par dentro uma lista utilizando estas funções do biblioteca padrão. 
 + 
 +Escrever sua própria versão de filter  
  
 ===== E agora, vamos brincar ===== ===== E agora, vamos brincar =====
temas/programacao/fp.txt · Última modificação: 2017/04/26 20:45 por phil