'地图'高阶 Haskell 函数

发布于 2024-12-11 11:24:19 字数 591 浏览 1 评论 0原文

例如,我有一个列表:

["Hello", "Goodbye"]

并且我想在列表上使用map

我之前已经成功使用过map

f = ("example" ++)

所以那么:

map f ["Hello", "Goodbye"]

会制作列表:

["exampleHello", "exampleGoodbye"]

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

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

["Hello", "Goodbye"]

将变为

["HelloHello", "GoodbyeGoodbye"]

How can I do that with map 和函数f(以及++)?

I have a list, for example:

["Hello", "Goodbye"]

and I want to use map on the list;

I've successfully used map before:

f = ("example" ++)

so then:

map f ["Hello", "Goodbye"]

Would make the list:

["exampleHello", "exampleGoodbye"]

but how can I use the list items in the function f?

For example, if I wanted to repeat the list element, so

["Hello", "Goodbye"]

would become

["HelloHello", "GoodbyeGoodbye"]

How can I do that with map and a function f (and ++)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟织青萝梦 2024-12-18 11:24:19

可以

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

So f的结果

["HelloHello","GoodbyeGoodbye"]

定义为 fx = (x++x)

Doing

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

results in

["HelloHello","GoodbyeGoodbye"]

So f could be defined as f x = (x++x).

一袭水袖舞倾城 2024-12-18 11:24:19

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

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

You'd probably want to use a lambda function for this kind of thing. You want to look at each item of the list, and then replace it with itself duplicated. Duplicating a string is easy: \str -> str ++ str, and now you just need to map that function over the list:

map (\x -> x ++ x) ["Hello", "Goodbye"]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文