"映射"高阶哈斯克尔函数



我有一个列表,例如:

["Hello", "Goodbye"]

,我想在列表中使用map;

我以前成功地使用过map:

f = ("example" ++)

然后:

map f ["Hello", "Goodbye"]

会出现在列表中:

["exampleHello", "exampleGoodbye"]

但是我如何在函数f中使用列表项?

例如,如果我想重复list元素,那么

["Hello", "Goodbye"]

将成为

["HelloHello", "GoodbyeGoodbye"]

我怎么能做到这一点与map和功能f(和++)?

Doing

map (x -> x++x) ["Hello", "Goodbye"]

搜索结果

["HelloHello","GoodbyeGoodbye"]

所以f可以定义为f x = (x++x)

您可能希望使用lambda函数来处理这种事情。您希望查看列表中的每个项,然后将其替换为重复的项。复制字符串很容易:str -> str ++ str,现在只需要将该函数映射到列表上:

map (x -> x ++ x) ["Hello", "Goodbye"]

最新更新