메신저 기능 프로그래밍에 새로운하지만 나는 특별히 자바에 대한 명령 프로그래밍 경험이 있습니다. 값을 smlnj에서 반복하는 방법을 물어보고 싶습니다. 당신은 varName + = anyNumber 또는 varName = varName + 1. smlnj에서 이것을 사용하는 방법을 알지 못합니다. var 값은 여기에 반복되지 않습니다. 내 코드 예제. 미리 감사드립니다. 입력 (목록)에 날짜가 많은 날짜가 한 달에 존재하는 방법 입력 및 출력됩니다 달에있는 경우smlnj 값을 반복하는 방법
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
이 프로그램을 확인합니다.
예 : number_in_month ([(년, 월, 일), monthEntered) number_in_month ([(2017,2,1), (2015,2,3), (2012,1,2)], 2) 목록의 첫 번째 항목과 두 번째 항목이 monthEntered와 같기 때문에 결과는 2 여야합니다.
내 코드의 문제는 내가 입력 한 모든 날짜가 입력 한 달과 동일하더라도 그냥 출력 1입니다. 나는 왜 그것이 단지 1을 출력하고 어떻게 고쳐야 하는지를 알고 싶다. 미리 감사드립니다 : D
당신에게 : 또는 SML에서,
그러나 여기 내가 고차 함수를 사용하여 특정 달에 속하는 목록에서 날짜의 수를 필터링하는 기능을 써서 어떻게 당신이 기능적으로보다는 명령 적으로 생각하고 있음을 의미하는 가변적 인 가치의 관점에서 생각하고 있습니다. 물론 값에 1을 더할 수는 있지만 SML의 순수한 기능 부분을 사용하여 값을 현재 값보다 1이되도록 mutate 할 수는 없습니다. –
실용적인 프로그래밍에 익숙하지 않아서이 문제를 어떻게 처리해야합니까? 나에게 그것을 이해할 수있는 예제 나 링크를 줄 수 있니? D Thanks :) –