2010-10-15 84 views
0

我想要聲明一個函數takelist:'列表列表 - > int - >'列表,以便調用takelist xs n將返回當前元素編號n在xs列表中。在SML的列表中使用List.nth

takelist [[#"3", #"6"], [#"6", #"2"], [#"5", #"9"]] 1; 

應返回[#「6」,#「2」,#「9」]。

這是我有:

fun tagliste (x::xs) n = List.nth(x,n); 

我沒有我想要的一半,我就想不通怎麼得到的一切。我只是從第一個列表中獲得n,而不是全部。我被告知地圖能夠提供幫助,但到目前爲止,我沒有正確使用它。

任何幫助表示讚賞!

回答

3

map採取函數f和列表[x0, x1, ..., xn]並返回[f x0, f x1, ..., f xn]

因此,如果我們將f x定義爲List.nth(x,n),您將返回[List.nth (x0, n), List.nth (x1, n), ..., List.nth (xn, n)],這正是您想要的。

+0

我不確定我完全理解你的意思。 – GeorgeWChubby 2010-10-15 23:16:10

+0

@George:我的意思是'fun tagliste xs n = map(fn x => List.nth(x,n))xs' – sepp2k 2010-10-15 23:20:25

+0

謝謝,現在我明白了。 – GeorgeWChubby 2010-10-16 10:10:24