> 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/