Necesito definir una función 'Componer' que tome una lista 'L' que es una lista de funciones. Cuando especifico un parámetro que se adaptará a todas las funciones en la lista, la última función se evalúa utilizando este parámetro. El resultado se pasa a la segunda función y así sucesivamente hasta que lleguemos al primer elemento (función) en la lista y obtenemos el resultado final.¡La composición de las funciones en una lista de funciones!
E.g.
Componer ((fn N -> N + 1)^(fn N -> 2 * N)^#) 3.
dar la respuesta 7.
tengo que escribir esto en un lenguaje funcional de programación llamado SAL (lenguaje aplicativo sencilla) ideado por el profesor de mi universidad (sintaxis, por tanto, divertida anterior (^ seperates elementos de la lista y las marcas # final de la lista)).
Si se pueden escribir soluciones en pseudocódigo teniendo en cuenta que no puedo usar bucles, variables, etc. que serían muy apreciadas. Aparentemente la solución es una respuesta de una línea. Me imagino que implica la recursión (¡el 99% de nuestras funciones lo hacen!).
Además, no entiendo a Haskell (¡supongo que tendré que aprender!) Así que el código de psuedo o incluso el inglés sencillo sería genial. -
Muchas gracias.
en su primera versión, el $ es innecesaria, y por lo tanto es posible que desee escribir como pointfree esto: 'compose = foldl (flip (.)) id'. – HaskellElephant
Gracias por el comentario, pero esta no era realmente mi solución, pero copiada del enlace que publiqué. –
Los pliegues derechos son generalmente mucho mejores para este tipo particular de cosas si tienen la semántica deseada: más flojo y más eficiente. – dfeuer