2010-10-15 2 views
0

Я пытаюсь объявить функцию takelist: 'список list -> int ->' список, так что вызов takelist xs n вернет элементы в месте число n в списках от xs.Использование List.nth в списке списка в SML

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

+0

@George: Я имею в виду 'fun tagliste xs n = map (fn x => List.nth (x, n)) xs' – sepp2k

+0

Спасибо, теперь я его получаю. – GeorgeWChubby

Смежные вопросы