我想要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));