SML в функциях параметров списка - PullRequest
1 голос
/ 30 октября 2011

У меня было два параметра.Первым был список, а другим было целое число n.Наша функция сформировала новый список, который содержал первые n элементов списка параметров и предполагал, что n

([1,2,3,4],2 )  
  [1,2] 

Как мне сделать это только с использованием -> nil, ::, @?

1 Ответ

1 голос
/ 30 октября 2011

То, что вы описываете, это List.take функция в базовой библиотеке SML:

List.take ([1,2,3,4],2 )
[1,2]

Если вы хотите сделать функцию самостоятельно:

fun take ([], _) = []
  | take (_, 0)  = []
  | take (x::xs, n) = x::take(xs, n-1)

Или для демонстрации использования -> nil, ::, @ (использование @ не рекомендуется, только для иллюстрации):

fun take (nil, _) = nil
  | take (_, 0)  = nil
  | take (x::xs, n) = [x] @ take(xs, n-1)
...