我试图让这会变成一个功能[1..10]成[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10].到目前为止prepend,我将在列表的开头添加一些相同的元素:
-- prepend value num times to the start of list (eg: prepend [] 5 1 = [1,1,1,1,1]
prepend :: [a] -> Int -> a -> [a]
prepend [] _ _ = []
prepend list 0 _ = list
prepend list num value = prepend (value : list) (num - 1) value
Run Code Online (Sandbox Code Playgroud)
要创建我正在使用的最终列表foldl:
foldl (\acc x -> (prepend acc 2 x)) [] [1..10]
我希望它能够通过[1..10],并为每个元素添加2个x到acc,但当我把它放入GHCI时我才回来[]
我是来自C/C++背景的Haskell的新手
如果你有一个空列表,并且你想要添加一些元素,你真的想要返回空列表吗?不.请删除以下行:
prepend [] _ _ = []
Run Code Online (Sandbox Code Playgroud)
毕竟,prepend [] 2 0应该是[0,0]而不是[].除此之外,它工作正常,但你可以写concatMap和replicate:
concatMap (replicate 2) [1..10]
Run Code Online (Sandbox Code Playgroud)