:
ist der "Nachteile" -Operator und erstellt eine neue Liste, deren Kopf ist der Wert auf der linken Seite des Betreibers und dessen Schwanz ist der Wert auf der rechten Seite des Betreibers. Somit ist 0 : [1, 2, 3]
die Liste [0, 1, 2, 3]
.
prüft das Verhalten dieser Funktion durch f 1 0
Auswertung wie folgt:
f 1 0 = 0 : f 3 1
d.h. f 1 0
ist das Ergebnis eine neue Liste zu schaffen, bestehend aus 0
am Kopf und die Liste nach f 3 1
als tail zurückgegeben. In ähnlicher Weise ist f 3 1
wie folgt:
f 3 1 = 1 : f 5 4
f 3 1
d.h. das Ergebnis ist eine neue Liste zu schaffen, bestehend aus 1
am Kopf und die Liste nach f 5 4
als tail zurückgegeben.
Die Funktion erstellt also rekursiv eine Liste. Außerdem ist es unendlich tail-rekursiv (da es keine abschließende Bedingung hat) und ergibt somit eine unendlich lange Liste.
Wie für die erste Linie, f :: Integer -> Integer -> [Integer]
, zeigt dies an, dass f
eine Funktion, die zwei ganze Zahlen nimmt (Integer -> Integer
) und gibt eine Liste von ganzen Zahlen ([Integer]
). Streng genommen nimmt f
eine Ganzzahl (Integer
) und gibt eine andere Funktion zurück, die eine ganze Zahl annimmt und eine Liste von Ganzzahlen (Integer -> [Integer]
) als Ergebnis der Funktion Currying zurückgibt. Dies ist ein Konzept, mit dem Sie vertraut werden, wenn Sie Haskell und andere funktionale Programmiersprachen näher kennenlernen.
Sie haben Syntaxfehler in Ihrem Beispiel ... – sth
+1 * THIS * ist, wie man eine Hausaufgabenfrage stellt. – luqui