我想要SML列表中的最后一个值。
例如1::2::3 => 3
我尝试使用“last”,但它没有用。
我试图实现它,就像这样:
val rec last =
fn (h::list) => last (list)
| (h::nil) => h
| (nil) => nil;
但它给了我一个问题:匹配多余。
感谢您的帮助。
答案 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));