는이 목록에서 최대 INT를 찾을 수있는 간단한 기능이지만, 나는 옵션이 작동하는 방법에 의해 혼란 스러워요 :옵션은 어떻게 작동합니까?
(* fn : int list -> int option *)
fun max1 (xs : int list) =
if null xs then NONE
else
let val tl_ans = max1 (tl xs)
in
if isSome tl_ans andalso valOf tl_ans > hd xs
then tl_ans
else SOME (hd xs)
end
그것은 "옵션"ML을 사용하고,하지만 난 방법을 모른다 . 첫 번째 NONE 사용은 간단하지만 나중에 과 함께 사용하면과 valOf이 아무데도 나오지 않는 것 같습니다. 나는 종류의 일부이 유형에을 (의 HD XS)를 가하고 이해하지만이
if isSome tl_ans andalso valOf tl_ans > hd xs
가 작동 어떻게 헤아릴 수 없습니다.
감사합니다. 말이된다. 마침내 내 혼란은 let 바인딩에서 발생하는 재귀에서 발생한다는 것을 알게되었습니다. val tl_ans = max1 (tl xs). 나는 let의 몸보다 우선하는 재귀를 제대로 보지 못했습니다. 그 이해가 없으면 어떻게 tl_ans가 유형 옵션이되었는지 궁금해하고있었습니다. – 147pm