数组中的重复元素(SML)

时间:2014-10-16 19:40:31

标签: list sml

我有以下列表

L = [2, 4, 6, 8, 10]

我正在尝试编写一个复制列表中每个元素的函数,因此最终结果将是

L = [2, 2, 4, 4, 6, 6, 10, 10]

我的职能是

fun duplicateList(nil) = nil
  | duplicateList([a]) = [a]
  | duplicateList(L) = 
       let val copy = L
       in hd(L)::hd(copy)::duplicateList(tl(L))
       end;

但我收到的错误是Error: syntax error: replacing END with EQUALOP

这意味着什么,我该如何避免呢?

2 个答案:

答案 0 :(得分:1)

您可以按如下方式编写您的功能

fun duplicateList nil = nil
  | duplicateList (x::xs) = x :: x :: duplicateList xs;

这样你就不会制作副本而只需要担心两个案例。

答案 1 :(得分:1)

也许你可以做类似下面的事情:

val L = [2, 4, 6, 8, 10]
val D = foldr (fn (a, b) => a::a::b) [] L