列表参数函数中的SML

时间:2011-10-30 18:24:34

标签: sml

我有两个参数。第一个是列表,另一个是整数n。 我们的函数形成了一个新列表,其中包含参数列表的前n个元素,并假设为n

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

如何仅使用-> nil, ::, @

进行此操作

1 个答案:

答案 0 :(得分:1)

您所描述的是SML基础库中的List.take函数:

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)