J'ai besoin d'une fonction qui prend un nombre arbitraire d'arguments (tous du même type), fait quelque chose avec eux et renvoie ensuite un résultat. Une liste d'arguments est impraticable dans mon cas spécifique.
En parcourant les librairies haskell, j'ai vu que la fonction printf
(du module Text.Printf
) utilise une astuce similaire. Malheureusement, je n'ai pas pu comprendre cette magie en regardant la source.
Quelqu'un peut-il m'expliquer comment y parvenir, ou au moins me donner une page web/un document/quelque chose où je pourrais trouver une bonne description de ce processus ?
Motivation :
La raison pour laquelle j'en ai besoin est vraiment très simple. À l'école (cours d'informatique), on nous demande d'écrire un module capable d'"enregistrer" une expression mathématique, de l'exprimer sous forme de chaîne de caractères (via l'écriture d'une instance de Num/Real/etc pour un type de données propre), et d'effectuer diverses opérations sur celle-ci.
Ce type de données contient un constructeur spécial pour une variable, qui peut être remplacée par une valeur ou autre par une fonction spécifiée. L'un des objectifs est d'écrire une fonction, qui prend une telle expression avec un certain nombre de variables (paires de type (Char,Rational)
) et calcule le résultat de l'expression. Nous devrions examiner la meilleure façon d'exprimer le but de la fonction. (Mon idée : La fonction renvoie une autre fonction qui prend exactement autant d'arguments que de variables définies dans la fonction - cela semble impossible).