SML - 最后列表

时间:2011-05-29 19:03:26

标签: list sml

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

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

我尝试使用“last”,但它没有用。

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

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

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

顺便说一句,List.last应该有效,因为它是SML Basis Library的一部分。

答案 1 :(得分:2)

也可以这么简单地完成:

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