“Programação funcional é baseado em mônadas... e uma mônada é simplesmente uma tripla(T, n, u), onde T é uma endofunção T: X->X e n: 1->T e u: T x T T são duas transformações naturais que satisfazem → as seguintes leis: Identidade: u(n(t)) = T = u(T(n)) Associativa: u(u(T x T) x T)) = u(T x u(Tx T)) Em outras palavras: Uma mônada em X é apenas um monóide na categoria das endofunções de X, com o produto x sendo substituido pela composição das endofunções e setado unitáriamente pela identidade da endofunção Simples.”
uma filosofia diferente dos outros paradigmas. • A ideia principal é usar Funções, ao invés de objetos e procedures, para construir os blocos de um programa. • Para isso, temos alguns conceitos chaves
vez mais necessário nos dias de hoje • A ideia de não guardarmos nada em variáveis nos dá o grande poder dos dados imutáveis • Ou seja, elimina o risco gerado pelas condições de corridas
a facilidade de juntar os módulos do sistema sem quebrar nada. • Ou seja, são linguagens preparadas para serem implementadas em multicores, multithreads, sem que o programador se preocupe com isso, porque, novamente, não alteramos estados, não temos deadlocks!!
a chamada de uma expressão até que o valor retornado dessa expressão seja realmente necessário. • Evita a necessidade de calcular o retorno da função novamente, técnica conhecida como memorização
tem uma função. Essa função não usará um dos seus parâmetro. Sem Lazy Evaluation, esse parâmetro, que pode ser uma função, seria sempre calculado. Computacionalmente caro, não?
chamada, altera o estado de algo, podendo ser uma variável. • Ou seja, o comportamento do programa torna- se imprevisível. • Dependendo bastante da ordem que as expressões são calculadas e chamadas • Debuggar um programa que possui efeitos colaterais e comportamentos imprevisíveis requer conhecimento sobre o contexto atual dele.
Superior e a Lazy Evaluation, temos ferramentas para separar cada módulo do sistema, distribuindo, de forma eficiente, as responsabilidades. Garantindo uma melhor manutenção.
rodrigoaraujo.me Estudante de Ciência da Computação Universidade Salvador – Escola de Engenharia e Tecnologia Agradecimento especial para Juliana Barreto por me ajudar no Design e disponibilizar a fonte. E por ser a garota mais incrível e linda do mundo.