Sim, é a mesma coisa.
Currying é um conceito do calcculus. É uma transformação entre A × B → C e A → ( B → CλA × B → C . Pense nisso como "se tivermos uma função de dois argumentos dos tipos A e B , podemos corrigir o primeiro argumento (do tipo A ) e obteremos uma função do argumento restante (do tipo B )". De fato, essa transformação é um isomorfismo. Isso é feito matematicamente preciso por modelos matemáticos de λ- cálcio(digitado), que sãocategorias fechadas cartesianas.A → ( B → C)UMABUMABλ
Há uma categoria de conjuntos numerados. Um conjunto numerado é um par onde A é um conjunto e ν A : N → A é uma exceção parcial , ou seja, um mapa de números para A( A , vUMA)UMAνUMA: N → AUMA , que também pode ser indefinido. Se então dizemos que n é um código de x . Na teoria da computabilidade, existem muitos exemplos. Sempre que codificamos algumas informações com um número, obtemos um conjunto numerado. Por exemplo, existe uma numeração padrãoνUMA( n ) = xnx de funções calculáveis parciais, de modo que φ n ( k ) é o número calculado pela função calculável parcial codificado por N quando aplicada a k . (O resultado pode ser indefinido.)φφn( K )nk
Um morfismo de conjuntos numerados é um mapa realizado , o que significa que existe n ∈ N tal que f ( ν A ( k ) ) = ν B ( φf: ( A , vUMA) → ( B , νB)n ∈ N para todos os k no domínio de ν Uma . Isso parece complicado, mas tudo o que diz é que φ nf( νUMA( k ) ) = νB( φn( k ) )kνUMAφnfaz para codificar o que faz para elementos. É a maneira matemática de dizer que "programa de φ n implementa a função de f ".fϕnf
Aqui está o argumento final: a categoria de conjuntos numerados é fechada cartesiana. Podemos, portanto, interpretar o calulus digitado nele e perguntar qual programa implementa a operação de curry. A resposta é: o programa dado pelo teorema smn.λ