我想复制列表的第 n 个元素,而我对 haskell 的了解非常有限。我尝试将列表分成两部分,然后获取第一部分的最后一个元素并将其粘贴在这些部分之间:
dupl n (x:xs) = (take n (x:xs)) ++ ( (x:xs) !! n) ++ (drop n (x:xs))
但我总是得到错误:
Prelude> :l f.hs
[1 of 1] Compiling Main ( f.hs, interpreted )
f.hs:5:39:
Occurs check: cannot construct the infinite type: a0 = [a0]
In the first argument of `(:)', namely `x'
In the first argument of `(!!)', namely `(x : xs)'
In the first argument of `(++)', namely `((x : xs) !! n)'
Failed, modules loaded: none.
有人可以告诉我我做错了什么吗?