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

标签 haskell syntax

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

相关文章:

Haskell - 解析时间 : how to verify a date-string's format AND validity

syntax - Scilab 语法 : How to transpose and reshape without the use of an intermediate variable?

variables - Docker Compose 中的环境变量赋值 - 冒号方式

python - 忽略查找和替换算法中引号中的字符

haskell - 神秘的串行端口行为

haskell - 如何在堆栈中使用 "-ddump-minimal-imports"

linux - Ubuntu 上 Haskell (GHC) 中的 ThreadDelay 问题

haskell - 无法读取点分隔的整数

haskell - 记录语法不合法。 haskell中的二叉树

c - 下面的宏使用有什么问题?