Escriure una funció ordre(ops) que,
donada una llista no buida ops de funcions
de dos paràmetres retorna una nova funció de dos
paràmetres.
Aquesta funció retornada el que ha de fer és, quan és invocada, ha
d’escriure el resultat d’aplicar la primera funció
d’ops als arguments que ha rebut, després
ha de retornar una funció que aplicarà la segona funció
d’ops i així successivament. Quan la
funció retornada hagi aplicat la darrera funció
d’ops, caldrà que retorni una funció que
torni a començar aplicant la primera funció
d’ops.
La funció té un paràmetre, una llista de funcions de dos paràmetres.
Fixeu-vos que la funció demanada ha d’escriure el resultat d’aplicar la funció que pertoca i retornar una funció que faci el que demana l’enunciat. Aquí estem demanant una funció que faci les dues coses, escriure i retornar.
Un cop definida la funció, en provar-la al REPL de Python us hauria de sortir el mateix que podeu observar més avall.
>>> from operator import add, mul, sub >>> funcions = [add, mul, sub] >>> f = ordre(funcions) >>> f = f(1.0,2.0) # aplica add i retorna mul 3.0 >>> f = f(1.0,2.0) # aplica mul i retorna sub 2.0 >>> f = f(1.0,2.0) # aplica sub i torna a començar amb add -1.0 >>> f = f(1.0,2.0) # aplica add i... 3.0 >>> f = f(1.0,2.0) 2.0 >>> f = f(1.0,2.0) -1.0 >>>