Вы находитесь на странице: 1из 19

Universidade Federal Rural de Pernambuco - UFRPE

Departamento de Estatística e Informática - DEINFO


Bacharelado em Ciência da Computação

Glauber Henrique
João Paulo
Rodrigo Monteiro
Thaís Bione
Introdução

A linguagem de programação Haskell é baseada no


paradigma de programação funcional, que consiste na escolha de
funções matemáticas que expressam o problema de forma
declarativa, explicitando a sua funcionalidade em funções
matemáticas.
Daremos início à nossa apresentação com uma breve
demonstração das características de cada linguagem referida em
nossa pesquisa.
Como Haskell funciona??
 Baseada no Cálculo Lambda
 Paradigma Funcional
 Avalia expressões
 Alto nível de abstração
 Compilada
 Fortemente tipada
 Listas homogêneas
 Declaração de tipos
Como Python Funciona??
 Grande semelhança com o pseudo-código
 Multifuncional
 Multiplataforma
 Possui ambiente IDLE
 Dinamicamente tipada
 Não possui declaração de tipos
 Interpretada
Para Começar...

... A programação Funcional é um paradigma que trata a


computação como uma avaliação de funções matemáticas . Tais
funções podem ser aplicadas em sequência de dados (geralmente
listas ). São exemplos de linguagens funcionais : LISP, Scheme e
Haskell (esta última influenciou o projeto do Python de forma
marcante).
As operações básicas do paradigma funcional são implementadas
no Python pelas funções builtin map (), filter (), reduce() e zip().
No Python a função lambda é uma função anônima composta por
expressões. Essa função pode ter apenas uma linha e pode ser atribuída a
uma variável. Funções lambda são muito usadas em programação
funcional.
Vale orientar que a função reduce () no Python tem a mesma
funcionalidade que a foldr1, utilizada em Haskell.
Lambda
Em Haskell (é representado pelo ‘\’):
Ao invés de usar equação para definir funções, pode-se utilizar uma
notação lambda na qual a função não precisa de um nome.
Ex.:
sucessor :: int -> int
sucessor x = x+1 , que é o mesmo que \x -> x+1
Em Python :
Poderia ser utilizada em qualquer lugar que exigiria uma função
tradicional.
Ex.:
quad = lambda x,y,z : (x**2,y**2,z**2)
print quad (2,4,6)

*** Lambda consome menos recursos computacionais, porém são


mais limitadas.
Foldr1
Em Haskell:
Coloca um operador entre os elementos de uma lista.
def:
foldr1 :: (t->t->t) -> [t]-> t
foldr1 f [a] = a
Ex.:
Em Python (reduce()):
Aplica uma função que recebe dois parâmetros, nos dois primeiros
elementos de uma sequência, aplica novamente a função usando
como parâmetros o resultado do primeiro par e o terceiro elemento,
até o final.

Ex.:
Map

Em Haskell:
Aplica uma função a todos os elementos de uma lista...
def:
map :: (t->u) -> [t] -> [u]
map f [] =[]
map f (a:x) = f a : map f x

Ex.:
Em Python:
Aplica uma função a todos os itens de uma sequência,
gerando outra lista contendo os resultados e com o mesmo
tamanho da lista inicial. Sempre retorna uma lista.

Ex.:
Filter
Em Haskell:
Filtra a lista através de um predicado ( função que tem tipo
Bool), ou propriedade.
def.:
filter :: (t-> Bool)-> [t] -> [t]
filter p [] = []
filter p (a:x)
| p a = a : filter p x
| otherwise = filter p x
Ex.:
Em Python:
Uma função é aplicada em todos os itens de uma sequencia, se a
função retornar um valor que seja avaliado como verdadeiro, o
item original fará parte da sequencia resultante.

Ex.:
Zip
Em Haskell :
Transforma duas listas em uma lista de tuplas.
def.:
zip (a:x) (b:y) = (a,b) : zip x y
zip _ _ = []

Ex.:
Em Python:
Constrói uma série de sequências a partir de outra, aonde a
primeira nova sequência contém o primeiro elemento de cada
sequência original, a segunda nova sequência contém o segundo
elemento de cada sequência original, até que alguma das sequências
originais acabe.

EX.:
List Comprehension
Em Haskell :
É uma maneira de se descrever uma lista inspirada na notação
de conjuntos.
Na list Comprehension o a <-list é chamado de generator
(gerador), pois ele gera os dados em que os resultados são
construídos. Os geradores podem ser combinados com predicados
(predicates) que são funções que devolvem valores booleanos (a->
Bool).
Ex.:
Em Python:
Equivale a uma notação matemática tipo:

É melhor que usar map () e reduce () tanto em


termo de processamento quanto em consumo de
memória.

Ex.:

Вам также может понравиться