2008-12-17 9 views

Respuesta

6

Currying es realmente un concepto matemático en primer lugar. Es simplemente la observación de que para cualquier n función ary f: S × ... S n R, se puede definir una nueva función fprime (acaba de encontrar un error de reducción del precio!) Con n-1 parámetros donde ese primer parámetro se reemplaza por una constante. Por lo tanto, si usted tiene una función add(a,b), se puede definir una nueva función add1(b) como

add1(b) ::= add(1, b)

... leer ":: =" como "se define como".

A cierre es más un concepto de programación. (Por supuesto, todo en la programación también es un concepto matemático, pero los cierres se volvieron interesantes debido a la programación.) Cuando construyes un cierre, unes una o más variables; estás creando un trozo de código que tiene algunas variables asociadas.

La relación es que se puede utilizar un cierre con el fin de poner en práctica currying: usted podría construir su función add1 anteriormente al hacer un cierre en el que el primer parámetro está obligado a 1.

+0

Lo que usted ha descrito es la evaluación parcial en lugar de currying. Relacionado, pero no exactamente lo mismo. –

Cuestiones relacionadas