(++) "!" "a" "!a" 这两行对我来说没有意义。在 map 中使用 ++ 时,似乎第一个-6ren">
gpt4 book ai didi

haskell - 部分应用程序在这里如何工作?

转载 作者:行者123 更新时间:2023-12-02 18:06:55 26 4
gpt4 key购买 nike

> map (++ "!") ["a", "b", "c"]
["a!","b!","c!"]
> (++) "!" "a"
"!a"

这两行对我来说没有意义。在 map 中使用 ++ 时,似乎第一个参数附加到第二个参数,但在第二个列表中,情况恰恰相反。 Haskell 如何推理 map 函数中的行为?

最佳答案

(++ "!") 是一种特殊的语法,称为 operator section 。它部分应用中缀运算符的第二参数,而(++) "!"像正常的部分应用一样工作并应用第一个参数。

您还可以使用带反引号的中缀样式的常规函数​​执行相同的操作:(`map` [1..3]) 相当于 (\f -> map f [1..3]).

这看起来很奇怪,因为它确实是一个特殊情况的额外功能,只是因为它非常有用。

关于haskell - 部分应用程序在这里如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4092889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com