SML-列表中的最后一个



我想要SML列表中的最后一个值。

例如1::2::3 => 3

我试着用"last",但没用。

我试着实现它,就像这样:

val rec last =
    fn (h::list) => last (list)
       | (h::nil) => h
       | (nil) => nil;

但这给了我一个问题:匹配多余。

谢谢你的帮助。

我怀疑(h::nil)的情况是多余的,因为它是(h::list)的特例。我认为你应该重新排序你的比赛案例:

    exception Empty
    val rec last =
        fn (h::nil) => h
           |(h::list) => last (list)
           | (nil) => raise Empty;

顺便说一下,List.last应该工作,因为它是SML基础库的一部分。

也可以这么简单:

exception Empty
fun lastinList [] = raise Empty
| lastinList l = hd(rev(l));

最新更新