Articles of functional programming

Implicações do foldr vs. foldl (ou foldl ‘)

Em primeiro lugar, o Real World Haskell , que estou lendo, diz para nunca usar foldl e, em vez disso, usar foldl’ . Então eu confio nisso. Mas eu estou confuso quando usar foldr vs. foldr foldl’ . Embora eu possa ver a estrutura de como eles funcionam de maneira diferente na minha frente, sou […]

Vincular Vs Lambda?

Eu tenho uma pergunta sobre qual estilo é preferido: std :: bind Vs lambda em C ++ 0x. Eu sei que eles servem, de alguma forma, diferentes propósitos, mas vamos dar um exemplo da funcionalidade de interseção. Usando lambda : uniform_int distribution(1, 6); mt19937 engine; // lambda style auto dice = [&]() { return distribution(engine); […]

Como usar instâncias (->) de Monad e confusão sobre (->)

Em diferentes questões, encontrei dicas em comentários sobre o uso da instância (->) do Monads, por exemplo, para obter um estilo sem pontos. Quanto a mim, isso é um pouco abstrato demais. Ok, eu vi instâncias Arrow em (->) e parece-me, que (->) pode ser usado em notações de instância, mas não em declarações de […]

Qual é a diferença entre eq ?, eqv ?, equal? ​​E = in Scheme?

Eu me pergunto qual é a diferença entre essas operações. Eu tenho visto perguntas semelhantes no Stack Overflow, mas elas são sobre o Lisp, e não há uma comparação entre três desses operadores. Então, se isso já foi solicitado, por favor me avise. Estou escrevendo os diferentes tipos de comandos no Scheme e recebo as […]

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 […]