List 使用haskell中的replicate函数添加到列表中
我将使用Haskell拥有的复制函数(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
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]
类型的函数。碰巧这个函数被称为(++)