Ich habe eine Liste von ganzen Zahlen basierend auf Buchstaben. Zum Beispiel:Faltung in Haskell, mit mehr als einer Funktion
let charlist = map (ord) "ABCDEF"
charlist
würde dann wie folgt aussehen:
[65,66,67,68,69,70]
ich auch eine Liste mit drei Funktionen: (+)
, (-)
und (*)
. Die Liste in diesem Beispiel sieht wie folgt aus
let funclist = [(+), (-), (*)]
ich die Funktionen um zwischen den Elementen in charlist
anwenden möchten (wenn es mehr „Räume“ in charlist
sind, als es Elemente in funclist
, Sie anfangen von Anfang funclist
) und den Endwert von links nach rechts berechnen, wie folgt aus:
s = ((((((65) + 66) - 67) * 68) + 69) - 70)
ich dachte über die Verwendung von foldl
, b ut foldl
scheint nur mit einer Funktion zu arbeiten. Gibt es einen anderen Weg, dies zu tun? Ich möchte diesen gesamten Prozess möglichst in einer Funktion zusammenfassen, obwohl dies keine Voraussetzung ist.
Ich schlage vor, Sie zu implementieren versuchen, Dazu wird zuerst Mustererkennung und explizite Rekursion verwendet. Sobald Sie eine Lösung gefunden haben, die funktioniert, ist noch Zeit zu sehen, ob sie dem Muster für eine Funktion höherer Ordnung wie "foldl" entspricht. – kosmikus
Sie können 'cycle' verwenden, um die Funktion zu implementieren, die Sie am Anfang von' funclist' neu starten, wenn keine Elemente mehr vorhanden sind. – kosmikus