J'ai besoin de définir une fonction 'Compose' qui prend une liste 'L' qui est une liste de fonctions. Lorsque je spécifie un paramètre qui conviendra à toutes les fonctions de la liste, la dernière fonction s'évalue elle-même en utilisant ce paramètre. Le résultat est ensuite passé à la deuxième dernière fonction et ainsi de suite jusqu'à ce que nous obtenions le premier élément (fonction) dans la liste et nous obtenons le résultat final.La composition des fonctions dans une liste de fonctions!
E.g.
Composer ((fn N -> N + 1)^(fn N -> 2 * N)^#) 3.
donner la réponse 7.
Je dois écrire ceci dans un langage de programmation fonctionnelle appelée SAL (simple, langage applicatif) conçu par un professeur dans mon collège (syntaxe donc drôle ci-dessus (^ seperates éléments de liste et des marques # fin de la liste)).
Si des solutions pouvaient être écrites en pseudo-code, je ne pourrais pas utiliser de boucles, de variables, etc., ce qui serait très apprécié. Apparemment, la solution est une réponse d'une ligne. J'imagine que cela implique une récursivité (99% des fonctions de notre tâche font!).
Aussi je ne comprends pas Haskell (devinez que je vais devoir apprendre!) Donc le code de psuedo ou même l'anglais simple serait grand. -
Merci beaucoup.
dans votre première version, le $ est inutile, et celui-ci vous voudrez peut-être écrire Pointfree comme ceci: 'compose = foldl (flip (.)) id'. – HaskellElephant
Merci pour le commentaire, mais ce n'était pas vraiment ma solution, mais copié du lien que j'ai posté. –
Les bons plis sont généralement beaucoup mieux pour ce genre particulier de chose s'ils ont la sémantique désirée - lazier et plus efficace. – dfeuer