ich bin neu in der funktionalen Programmierung, aber ich habe Erfahrung in der imperativen Programmierung speziell auf Java. Ich möchte fragen, wie ein Wert in Smln iterate ich weiß, dass auf Java können Sie varName + = anyNumber oder varName = varName + 1. auf smlnj ich weiß nicht, wie dies zu tun und mein Var-Wert ist nicht iterieren hier ist ein Beispiel meines Codes. Danke im Voraus.smlnj wie man einen Wert iteriert
fun number_in_month (dates : (int*int*int) list , month : int) =
let
val total = 0;
in
let
fun check(date : (int*int*int) list , m : int) =
if #2(hd(date)) = m
then total + 1 (* this is the problem in the code i don't know
how to iterate this like "varName += 1" in java *)
else check(tl(date),m)
in
check(dates,month)
end
end
dieses Programm wird prüfen, ob die Daten (auf einer Liste) sind auf dem Monat eingetragen und wird ausgegeben, wie viele Daten im Monat geben.
zum Beispiel: number_in_month ([(Jahr, Monat, Tag)], monateEntered) number_in_month ([(2017,2,1), (2015,2,3), (2012,1,2)], 2) Ausgabe muss 2 sein, da das erste und zweite Element in der Liste gleich dem memberEntered ist.
Das Problem in meinem Code ist es nur Ausgabe 1, auch wenn alle Daten, die ich eingegeben habe, gleich dem Monat ist, den ich eingeben. ich will nur wissen, warum es nur 1 ausgibt und wie soll ich es beheben. Vielen Dank im Voraus: D
Sie denken in veränderlichen Werten, dh Sie denken eher zwingend als funktional. Sie können natürlich 1 zu einem Wert hinzufügen, aber Sie können nicht (indem Sie die reinen funktionalen Teile von SML verwenden) veranlassen, dass ein Wert so mutiert wird, dass er 1 mehr als sein aktueller Wert wird. –
Tut mir leid, ich bin neu in der funktionalen Programmierung, wie soll ich mit diesem Problem umgehen? kannst du mir ein Beispiel oder einen Link geben, wo ich es verstehen kann: D Danke :) –