将一个字符串列表连接为一个字符串haskell [已关闭]

plupiseo  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(158)

已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

四个月前关门了。
Improve this question
我有一个字符串列表(见下文),我如何将这些字符串连接成一个包含一个字符串的列表。

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

["hellostackoverflow"]

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

nbysray5

nbysray51#

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

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

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

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

如果你有这样一个功能,你就可以完成一半的工作。

["hellostackoverflow"]

作为连接的结果。再看一下它的类型:

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

它的类型和开始时的一样,只是列表中只有一个元素,所以现在你需要一个函数把东西放到列表中,它必须有一个类型

putToList :: a -> [a]

一旦你有了concatputToList两个函数,你的解决方案就差不多准备好了。你需要做的最后一件事就是像这样编写它:

myConcatenation = putToList . concat

我建议你使用Hoogle来按类型搜索现有的函数。

5lhxktic

5lhxktic2#

concat ["hello","stack","overflow"] -- => "hellostackoverflow"
vom3gejh

vom3gejh3#

您也可以使用list monad将列表缩减为单个字符串,然后将结果重新 Package 在列表中。

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

上面的代码避免了显式使用Control.Monad.join

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

相关问题