Hallo, ich habe diesen Ausschnitt aus dem Code:verschachtelte lokale Deklarationen in ML von NJ
local
helper(f, i, j) = local
fun NTimesF(f, n:int) =
if n = 1 then fn (x) => f(x)
else fn (x) => f(NTimesF(f, n - 1)(x));
in
if(i <= j) then NTimesF(f, i) :: helper(f, (i+1), j)
else []
end
in
fun compList f n = helper(f, 1, n);
end;
Ich brauche Programm zu schreiben, die eine Funktion f und natürliche Zahl n und produzieren Liste von Funktionen wie [f1 empfängt, f2, ... fn] < - fn die Zusammensetzung der Funktion n-mal ist, aber jedes Mal, wenn ich einen Fehler erhalten:
- stdIn:1.1-2.9 Error: syntax error: deleting LOCAL ID LPAREN
stdIn:2.10-2.14 Error: syntax error: deleting COMMA ID COMMA
stdIn:2.16-2.25 Error: syntax error: deleting RPAREN EQUALOP LOCAL
stdIn:3.6-3.17 Error: syntax error: deleting FUN ID
stdIn:4.6-4.10 Error: syntax error: deleting IF ID
stdIn:4.15-4.22 Error: syntax error: deleting THEN FN
stdIn:4.27-4.31 Error: syntax error: deleting DARROW ID
stdIn:5.6-5.13 Error: syntax error: deleting ELSE FN
stdIn:5.16-5.22 Error: syntax error: deleting RPAREN DARROW ID
stdIn:6.8-7.8 Error: syntax error: deleting IN IF
stdIn:7.17-7.29 Error: syntax error: deleting THEN ID
stdIn:8.6-8.13 Error: syntax error: deleting ELSE LBRACKET RBRACKET
stdIn:9.8-11.5 Error: syntax error: deleting END IN FUN
es scheint, dass meine verschachtelten lokalen Erklärungen falsch sind, kann jemand bitte erklären, warum?
@ sepp2k: vielen Dank, ich habe zwei "local" auf zwei "let" geändert, trotzdem bekomme ich 4 erste Fehler, darf es etwas anderes sein? – rookie
@rookie: Nein, das äußere 'local' ist korrekt. Sie müssen nur das innere 'local' in' let' ändern (dasjenige, das einen Ausdruck enthält). – sepp2k
@rookie: Auch Sie vermissen ein 'Spaß' vor 'Helfer (f, i, j)' – sepp2k