Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 使用haskell中的replicate函数添加到列表中_List_Haskell_Functional Programming - Fatal编程技术网

List 使用haskell中的replicate函数添加到列表中

List 使用haskell中的replicate函数添加到列表中,list,haskell,functional-programming,List,Haskell,Functional Programming,我将使用Haskell拥有的复制函数(replicate 3'x'=['x','x','x']),但我试图将其添加到一个已经存在的列表中 Prelude > let k = ['d','f','g'] Prelude > (replicate 3 'd':k) 但我一直在犯错误 Couldn't match type 'Char' with '[Char]' Expected type: [[Char]] Actual type: [Char] 有办法做到这一点吗?k和复制3'd

我将使用Haskell拥有的复制函数(
replicate 3'x'=['x','x','x']
),但我试图将其添加到一个已经存在的列表中

Prelude > let k = ['d','f','g']
Prelude > (replicate 3 'd':k)
但我一直在犯错误

Couldn't match type 'Char' with '[Char]'
Expected type: [[Char]]
Actual type: [Char]

有办法做到这一点吗?

k
复制3'd'
都有一种
[Char]

ghci> :t k
k :: [Char]

ghci> :t replicate 3 'd'
replicate 3 'd' :: [Char]
但是,
(:)
的类型是
a->[a]->[a]
:它获取单个
a
,并将其添加到
a
的列表中

ghci> :t (:)
(:) :: a -> [a] -> [a]
所以Haskell给了你一个类型错误,因为你不能把
(:)
应用到两个
[Char]
类型的东西上。换句话说,您不能将
[Char]
放在
[Char]

ghci> :t k
k :: [Char]

ghci> :t replicate 3 'd'
replicate 3 'd' :: [Char]
我们真正需要的是一个连接两个列表的
[a]->[a]->[a]
类型的函数。碰巧这个函数被称为
(++)


k
replicate 3'd'
都有一种
[Char]

ghci> :t k
k :: [Char]

ghci> :t replicate 3 'd'
replicate 3 'd' :: [Char]
但是,
(:)
的类型是
a->[a]->[a]
:它获取单个
a
,并将其添加到
a
的列表中

ghci> :t (:)
(:) :: a -> [a] -> [a]
所以Haskell给了你一个类型错误,因为你不能把
(:)
应用到两个
[Char]
类型的东西上。换句话说,您不能将
[Char]
放在
[Char]

ghci> :t k
k :: [Char]

ghci> :t replicate 3 'd'
replicate 3 'd' :: [Char]
我们真正需要的是一个连接两个列表的
[a]->[a]->[a]
类型的函数。碰巧这个函数被称为
(++)