verschachtelte lokale Deklarationen in ML von NJ

7

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?

    
rookie 28.11.2010, 14:07
quelle

1 Antwort

20

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.

    
sepp2k 28.11.2010, 14:20
quelle

Tags und Links