En la resolución de problemas y la programación funcional, curry es la práctica de simplificar la ejecución de una función que toma múltiples argumentos para ejecutar funciones secuenciales de un solo argumento. En términos simples, Currying se utiliza para transformar una función de varios argumentos en una función de un solo argumento mediante la evaluación del anidamiento incremental de los argumentos de la función. Currying también repara un argumento con otro forma un patrón relativo durante la ejecución.
Ilustración matemática del currículo:
en general, el currículo de funciones requiere cualquier número de cálculos y datos en una sola función real que devuelve un resultado esperado. Aquí tomamos,
f(x, y) = (x*x*x) + (y*y*y) h(x) = (x*x*x) h(y) = (y*y*y) h(x)(y) = h(x)+h(y) f(x, y) = h(x)(y) Curry f = h(x)(y)
Por ejemplo, tomaremos el enstringmiento de la composición de la función.
a(x) = b(c(d(x)))
def change(b, c, d): def a(x): return b(c(d(x))) return a
v(a, b, c, d, e) = w(x(y(z(a, b, c, d, e))))
# Currying in Python - Many to Single Argument def change(a): def w(b): def x(c): def y(d): def z(e): print(a, b, c, d, e) return z return y return x return w change(10)(20)(30)(40)(50)
Producción:
10 20 30 40 50
Aquí, el concepto anida una función en otra función y, por lo tanto, el resultado de una función se registra en la string de funciones. Allí, simplificando un gran bloque de manipulación a bloques secuenciales más simples.
Código #1: Cambia kilómetro a metro y metro a centímetro.
# Demonstrate Currying of composition of function def change(b, c, d): def a(x): return b(c(d(x))) return a def kilometer2meter(dist): """ Function that converts km to m. """ return dist * 1000 def meter2centimeter(dist): """ Function that converts m to cm. """ return dist * 100 def centimeter2feet(dist): """ Function that converts cm to ft. """ return dist / 30.48 if __name__ == '__main__': transform = change(centimeter2feet, meter2centimeter, kilometer2meter ) e = transform(565) print(e)
Producción:
1853674.5406824148
Código #2:
# Demonstrate Currying of composition of function def change(b, c, d): def a(x): return b(c(d(x))) return a def daystohour(time): """ Function that converts days to hours. """ return time * 24 def hourstominutes(time): """ Function that converts hours to minutes. """ return time * 60 def minutestoseconds(time): """ Function that converts minutes to seconds. """ return time * 60 if __name__ == '__main__': transform = change(minutestoseconds, hourstominutes, daystohour) e = transform(10) print(e)
Producción:
864000
Publicación traducida automáticamente
Artículo escrito por MerlynShelley y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA