我在完成这项任务时遇到了一些麻烦。这是教授要求的:
编写一个最旧的函数,它接受一个日期列表并计算一个
(int*int*int)
选项。如果列表没有日期,则评估为 NONE,如果日期 d 是列表中最旧的日期,则评估为 SOME d。
我知道如何创建函数并对如何使用日期列表有一些想法,但我不知道如何“存储”最旧的值以将其与日期列表的尾部进行比较。这是我提交的(它不起作用,它总是检索第一个日期,但我真的很想知道答案)
fun oldest (datelist : (int * int * int) list) =
if null datelist
then NONE
else if null (tl datelist) then
SOME (hd datelist)
else let val date = if is_older (hd datelist, hd (tl datelist)) then SOME (hd datelist) else SOME (hd (tl datelist))
in oldest(tl datelist)
end