SML val'a grupper = fn:int - > '列表 - > '列表清单

时间:2011-10-20 11:00:07

标签: list functional-programming sml

我想创建一个类型为int -> 'a list -> 'a list list

的函数

函数调用:

grupper 2 [3, 1, 4, 1, 5, 9]将返回[[3, 1], [4, 1], [5, 9]]

grupper 4 [3, 1, 4, 1, 5, 9]将返回[[3, 1, 4, 1], [5, 9]]

grupper 42 [3, 1, 4, 1, 5, 9]将返回[[3, 1, 4, 1, 5, 9]]

到目前为止我得到了这个

fun grupper _ [] = []
| grupper n (x::xs) = if n > length(x::xs) then [x::xs]
                      else [List.take(x::xs, n)] @ grupper (n) xs
请帮忙。

1 个答案:

答案 0 :(得分:3)

您应该同时使用List.takeList.drop

fun grupper _ [] = []
  | grupper n xs = if n >= length xs then [xs]
                   else List.take(xs, n)::(grupper n (List.drop(xs, n)))