DevDay BH 2011 Programação Funcional

Preview:

DESCRIPTION

Palestra ministrada no evento DevDay BH 2011

Citation preview

DevDay 2011

Programação Funcional

Quem sou eu?

• Rodrigo Vidal– Twitter: @rodrigovidal– www.rodrigovidal.net

• Foco em Arquitetura de Software• Evangelista da Linguagem F#• Professional Scrum Developer• Microsoft Student Partner

Meu slide não é azul parceiro... É PRETO

Programação Funcional

• Antigo paradigma

• 52 anos

• Ignorado do mainstream corporativo

Isso importa?

• Novos desafios

• Mudança de Mindset

• Sair da zona de conforto

• Muitas linguagens implementam

Object vs Function

Pense diferente...!

• “Uma linguagem que não muda sua visão sobre programação, não vale ser aprendida.”

(Alan Perlis)

Lambda Calculus

• Foi desenvolvido por Alonzo Church in 1930, como uma forma de estudar funções e computabilidade.

Funções: O Coração

C# e ai?

• Generics

• Iterators

• Anonymous Methods

• Delegates

Transparência Referencial

A função depende apenas dos valores de seus parametros.

–Modificam estado– Interage de maneira observável com a

função invocadora– Interage com o “mundo exterior”– Exemplo: Uma função sem valor de

retorno

Efeito Colateral

Função Impura

Estados

Atribuição

Entrada Saída

Imutabilidade

Aplicação Parcial de Funções

T1 -> T2 -> R

Funções de Alta Ordem

Recursão em Cauda

Composição de Funções

f(x)

g(x)

MapReduce

Monads

Estrutura de uma Monad

• Haskell

class Monad m where (>>=) :: m a -> (a -> m b) -> m bReturn :: a -> m a

Obrigado!