将字符串列表连接到一个字符串haskell

时间:2016-04-29 11:33:50

标签: haskell

我有一个字符串列表(见下文)如何将这些字符串连接到一个包含一个字符串的列表中。

["hello","stack","overflow"] 

["hellostackoverflow"]

我只允许导入Data.Char和Data.List

3 个答案:

答案 0 :(得分:7)

将列表中的每个字符串视为字符列表

["hello","stack","overflow"] :: [[Char]]

连接是将多个列表连接成一个列表的过程。它必须具有以下类型:

concat :: [[a]] -> [a]

如果你有这样的功能,你将完成一半的工作。你正在寻找一种方法来获得

["hellostackoverflow"]

由于连接。再一次,看看它的类型:

["hellostackoverflow"] :: [[Char]]

它与您在开头时的类型相同,只是列表中只有一个元素。所以现在你需要一个将某些东西放入列表的函数。它必须有一个类型

putToList :: a -> [a]

一旦您同时拥有concatputToList功能,您的解决方案就会准备就绪。你需要做的最后一件事就是这样做:

myConcatenation = putToList . concat

我建议您使用Hoogle按其类型搜索现有功能。

答案 1 :(得分:1)

您还可以使用列表monad将列表缩减为单个字符串,然后将结果重新包装到列表中。

> [["hello", "stack", "overflow"] >>= id]
["hellostackoverflow"]

前面的内容避免明确使用Control.Monad.join

> import Control.Monad
> [join ["hello", "stack", "overflow"]
["hellostackoverflow"]

答案 2 :(得分:0)

  

concat [“hello”,“stack”,“overflow”]

“hellostackoverflow”