Articles of functional programming

Função recursiva da cauda para encontrar a profundidade de uma tree em Ocaml

Eu tenho uma tree tipos definida da seguinte forma type ‘a tree = Leaf of ‘a | Node of ‘a * ‘a tree * ‘a tree ;; Eu tenho uma function para encontrar a profundidade da tree da seguinte forma let rec depth = function | Leaf x -> 0 | Node(_,left,right) -> 1 + […]

Como compor `não` com uma function de aridade arbitrária?

Quando eu tenho alguma function do tipo f :: (Ord a) => a -> a -> Bool fab = a > b Eu gostaria de fazer function que envolva essa function com não. por exemplo, fazer function como esta g :: (Ord a) => a -> a -> Bool gab = not $ fab Eu […]

O Ruby executa a otimização da chamada de cauda?

As linguagens funcionais levam ao uso da recursion para resolver muitos problemas e, portanto, muitas delas executam a otimização da chamada de cauda (TCO). O TCO causa chamadas para uma function de outra function (ou em si, nesse caso, esse recurso também é conhecido como Eliminação de recursion de cauda, ​​que é um subconjunto do […]

Qual é a definição exata de um fechamento?

Eu li os tópicos anteriores sobre fechamento no stackflow e outras fonts e uma coisa ainda está me confundindo. Pelo que consegui juntar tecnicamente, um encerramento é simplesmente o dataset que contém o código de uma function e o valor das variables ​​ligadas nessa function. Em outras palavras, tecnicamente, a seguinte function C deve ser […]

O que é zip (functional programming?)

Eu recentemente vi alguns Clojure ou Scala (desculpe, eu não estou familiarizado com eles) e eles fizeram zip em uma lista ou algo parecido. O que é zip e de onde veio?

Como o currying pode ser feito em C ++?

O que é currying? Como o currying pode ser feito em C ++? Por favor explique os fichários no container STL?

O que é transparência referencial?

O que significa o termo transparência referencial ? Eu ouvi isso descrito como “isso significa que você pode replace iguais com iguais”, mas isso parece uma explicação inadequada.

java lambda retornando um lambda

Estou tentando fazer o que parece ser uma coisa relativamente básica na nova área de functional programming do jdk8, mas não consigo fazê-la funcionar. Eu tenho este código de trabalho: import java.util.*; import java.util.concurrent.*; import java.util.stream.*; public class so1 { public static void main() { List l = new ArrayList(Arrays.asList(1, 2, 3)); List<Callable> checks = […]

Existe uma maneira de fazer curry em C?

Digamos que eu tenha um ponteiro para uma function _stack_push(stack* stk, void* el) . Eu quero ser capaz de chamar o curry(_stack_push, my_stack) e recuperar uma function que apenas tira void* el . Eu não conseguia pensar em uma maneira de fazer isso, já que C não permite definição de function de tempo de execução, […]

Como posso predefinir argumentos na chamada de function JavaScript? (Aplicação de Função Parcial)

Eu estou tentando escrever uma function JavaScript que retornará seu primeiro argumento (function) com todo o resto de seus argumentos como parâmetros predefinidos para essa function. Assim: function fora (a, b) { document.write (a + “” + b); } function setter (…) {…} setter (out, “olá”) (“mundo”); setter (out, “olá”, “mundo”) (); Saída “olá mundo” […]