Hallo an alle, ich habe dieses Code-Schnipsel:
%Vor%Ich muss ein Programm schreiben, das eine Funktion f und eine Ganzzahl n empfängt und eine Liste von Funktionen wie [f1, f2, ... fn] & lt; - fn erzeugt, die Zusammensetzung der Funktion n-mal, aber jedes Mal, wenn ich empfange ein Fehler:
%Vor%es scheint, dass meine verschachtelten lokalen Deklarationen falsch sind, kann jemand bitte erklären warum?
Es gibt zwei Möglichkeiten, lokale Funktionen und Variablen in SML zu definieren: local ... in ... end
und let ... in ... end
.
Der Unterschied zwischen local
und let
ist, dass mit local
, was zwischen in
und end
kommt, eine oder mehrere Variablen- oder Funktionsdeklarationen sind. Mit let
ist das, was zwischen in
und end
kommt, ein Ausdruck.
Im Gegensatz zu local
, let
ist ein Ausdruck und der Wert eines let
Ausdrucks ist der Wert des Ausdrucks zwischen in
und end
.
Da Sie in Ihrem Fall einen Ausdruck zwischen in
und end
haben (und möchten, dass die Funktion das Ergebnis dieses Ausdrucks auswertet), müssen Sie let
, nicht local
verwenden.