'映射'高阶Haskell函数

时间:2011-10-23 17:15:48

标签: haskell map

我有一个列表,例如:

["Hello", "Goodbye"]

我希望在列表中使用'map';

我之前成功使用过地图:

f = ("example" ++)

那么:

map f ["Hello", "Goodbye"]

列出清单:

["exampleHello", "exampleGoodbye"]

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

例如,如果我想重复列表元素:

["Hello", "Goodbye"]

会变成:

["HelloHello", "GoodbyeGoodbye"]

我如何使用map和函数'f'(和++)来做到这一点?

非常感谢,

2 个答案:

答案 0 :(得分:8)

否则

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

结果

["HelloHello","GoodbyeGoodbye"]

因此f可以定义为f x = (x++x)

答案 1 :(得分:6)

您可能想要将lambda函数用于此类事情。您想要查看列表中的每个项目,然后将其替换为自身重复的项目。复制字符串很简单:\str -> str ++ str,现在您只需要在列表上映射该函数:

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