Articles of functional programming

O que é um combinador Y?

Um combinador Y é um conceito de ciência da computação do lado “funcional” das coisas. A maioria dos programadores não sabe muito sobre combinadores, se eles já ouviram falar deles. O que é um combinador Y? Como os combinadores funcionam? Para que eles são bons? Eles são úteis em linguagens procedurais?

Agrupar contando na API de stream do Java 8

Eu tento encontrar uma maneira simples em Java 8 stream API para fazer o agrupamento, eu saio com este caminho complexo! List list = new ArrayList(); list.add(“Hello”); list.add(“Hello”); list.add(“World”); Map<String, List> collect = list.stream().collect( Collectors.groupingBy(o -> o)); System.out.println(collect); List collect2 = collect .entrySet() .stream() .map(e -> new String[] { e.getKey(), String.valueOf(e.getValue().size()) }) .collect(Collectors.toList()); collect2.forEach(o -> […]

Stack overflow de recursion profunda em Java?

Depois de alguma experiência com linguagens funcionais, estou começando a usar mais a recursion em Java – mas a linguagem parece ter uma pilha de chamadas relativamente rasa de cerca de 1000. Existe uma maneira de aumentar a pilha de chamadas? Como posso fazer funções com milhões de chamadas profundas, como em Erlang? Estou percebendo […]

Programação funcional vs Programação orientada a objects

Eu fui exposta principalmente a programação OO até agora e estou ansioso para aprender uma linguagem funcional. Minhas perguntas são: Quando você escolhe a functional programming sobre o object? Quais são as definições típicas de problemas em que a functional programming é a melhor escolha?

Como faço para replace loops while com uma alternativa de functional programming sem otimização da chamada final?

Eu estou experimentando com um estilo mais funcional no meu JavaScript; Portanto, substituí lo for loops com funções de utilitário, como mapear e reduzir. No entanto, eu não encontrei um substituto funcional for loops while, já que a otimização da chamada final geralmente não está disponível para JavaScript. (Pelo que entendi, o ES6 impede que […]

Começando com o Haskell

Por alguns dias, tentei envolver meu paradigma de functional programming em Haskell. Eu fiz isso lendo tutoriais e assistindo screencasts, mas nada realmente parece ficar. Agora, ao aprender várias linguagens imperativas / OO (como C, Java, PHP), os exercícios têm sido uma boa maneira de eu ir. Mas desde que eu realmente não sei o […]

O que é uma mônada?

Tendo olhado brevemente para Haskell recentemente, o que seria uma explicação breve, sucinta e prática sobre o que uma mônada é essencialmente? Eu encontrei a maioria das explicações que eu encontrei para ser bastante inacessível e sem detalhes práticos.

O que é um ‘encerramento’?

Eu fiz uma pergunta sobre Currying e encerramentos foram mencionados. O que é um fechamento? Como isso se relaciona com o currying?

Qual é o rendimento do Scala?

Eu entendo o rendimento de Ruby e Python. O que o rendimento da Scala faz?

Zipando streams usando o JDK8 com lambda (java.util.stream.Streams.zip)

No JDK 8 com lambda b93 havia uma class java.util.stream.Streams.zip em b93 que poderia ser usada para zipar streams (isso é ilustrado no tutorial Explorando Java8 Lambdas. Parte 1 por Dhananjay Nene ). Esta function: Cria um stream combinado preguiçoso e seqüencial cujos elementos são o resultado da combinação dos elementos de dois streams. No […]