Currificación
En la ciencia de la computación, currificar es la técnica inventada por Moses Schönfinkel y Gottlob Frege que consiste en transformar una función que utiliza múltiples argumentos (o más específicamente una n-tupla como argumento) en una secuencia de funciones que utilizan un único argumento (la operación inversa a la composición de funciones en matemáticas).
Nomenclatura
[editar]El nombre "currificar", acuñado por Christopher Strachey en 1967, es una referencia al lógico Haskell Curry. Un nombre alternativo, Schönfinkelisation, ha sido propuesto.[1]
Definición
[editar]Dada una función f del tipo , currificándola sería una función del tipo . En otras palabras, toma un argumento del tipo y retorna una función del tipo . Descurrificar es la transformación inversa.
Intuitivamente, la currificación expone que "Si fijas algunos argumentos, tendrás una función de los argumentos restantes". Por ejemplo, si la función div significa la versión currificada de la operación x / y, entonces div con el parámetro x fijado en 1 es otra función: igual que la función inv que devuelve la inversa multiplicativa de sus argumentos, definida por inv(y) = 1 / y.
La motivación práctica para currificar es que en ocasiones, muy seguidas, las funciones obtenidas al utilizar algunos, pero no todos, los argumentos en una función currificada pueden resultar útiles; por ejemplo, muchos lenguajes tienen una función o un operador similar a plus_one
. Currificar hace fácil definir dichas funciones.
Referencias
[editar]- ↑ I. Heim and A. Kratzer (1998). Semantics in Generative Grammar. Blackwell.
Enlaces externos
[editar]- Wikcionario tiene definiciones y otra información sobre currificar.
- Currying in Python
- Implicit currying in Scheme
- Currying in Ruby
- Currying in Smalltalk Archivado el 19 de julio de 2008 en Wayback Machine.
- Currying in Algol68G
- Currying != Generalized Partial Application! - post at Lambda-the-Ultimate.org
- Currying in Scala
- Currying in Perl