Wie erstelle ich eine polyvariadische Haskell-Funktion?

Ich brauche eine Funktion, die eine beliebige Anzahl von Argumenten (alle vom selben Typ) annimmt, etwas damit macht und anschließend ein Ergebnis zurückgibt. Eine Liste von Argumenten ist in meinem speziellen Fall nicht praktikabel.

ls ich die haskell libs durchgesehen habe, habe ich gesehen, dass die Funktionprintf (aus ModulText.Printf) benutzt einen ähnlichen Trick. Leider konnte ich diese Magie nicht verstehen, indem ich auf die Quelle schaute.

Kann jemand erklären, wie man das erreicht, oder zumindest eine Webseite / ein Papier / was auch immer, wo ich eine gute Beschreibung dafür finden könnte?

Motivation

Der Grund, warum ich das brauche, ist wirklich ganz einfach. Für die Schule (Informatikklasse) müssen wir ein Modul schreiben, das in der Lage ist, einen mathematischen Ausdruck "aufzuzeichnen", ihn als Zeichenfolge auszudrücken (durch Schreiben einer Instanz von Num / Real / etc für einen eigenen Datentyp) und auszuführen verschiedene Operationen darauf.

Dieser Datentyp enthält einen speziellen Konstruktor für eine Variable, der durch einen Wert oder was auch immer durch eine angegebene Funktion ersetzt werden kann. Eines der Ziele ist es, eine Funktion zu schreiben, die einen solchen Ausdruck mit einer bestimmten Anzahl von Variablen (Paare vom Typ(Char,Rational)) und berechnet das Ergebnis des Ausdrucks. Wir sollten uns überlegen, wie wir das Ziel der Funktion am besten ausdrücken können. (Meine Idee: Die Funktion gibt eine andere Funktion zurück, die genau so viele Argumente akzeptiert wie Variablen, die in der Funktion definiert sind - scheint unmöglich zu sein.)

Antworten auf die Frage(10)

Ihre Antwort auf die Frage