Haskell 中的术语 "function application"

The term "function application" in Haskell

我目前正在学习 Haskell,遇到过几次 "function application" 这个词,但没有真正理解它的意思。

有人可以尝试解释 Haskell 中术语的含义,或者最终解释一下一般情况吗?

"Function application"这里的意思和"passing an argument to the function"差不多。例如,如果您有一个函数 f :: Int -> Int 和一个 x :: Int,那么 f x :: Int 是一个表达式,其中表达式 x 是 "applied" 作为 [=14 的参数=] *.

Haskell 中没有用于执行函数应用的真正内置运算符(除了将函数与其参数分隔的空格之外)。 Prelude 导出 ($) 函数,它(除了一些不寻常的奇怪之处)只是函数应用程序:即 ($) f xf x 相同(这主要用于某些句法技巧,虽然它偶尔也有其他用途)


*:有人向我指出,人们通常认为这是将函数应用于参数而不是将参数应用于函数,我认为这对理解的含义没有太大影响虽然在这里申请

"Applying" 一个函数与调用它是一样的,通过提供一个参数。

-- A function
f :: a -> a
f x = x

-- Application of f
f 100

另一个例子:

data C = A Int Int | B String

f1 :: Int -> Int -> C
f1 = A

f2 :: Int -> C
f2 = A 4

f3 = (4,) 

f4 = (,5)

f5 = (,)

我让你玩上次的类型

所以,AB也是函数,B等待一个String,returns一个新类型,C。与 (,) 元组构造函数的概念相同。

主要是标准的英语用法。

"Function application"只是函数的具体应用。 "Application" 在此上下文中只是对应于动词 "apply" 的名词;这意味着应用某物的行为或过程。

到"apply something"表示使用。 To "apply A to B" 意味着使用 A 对 B 做某事。因此 "apply a function" 意味着 use/call 某事上的功能。在 Haskell 中,当我编写表达式 f x 时,我将 f 应用于 x

因此"function application"只是应用函数的一般概念的术语。在特定的上下文中,它可能被用来谈论:

  1. 一般应用函数的广义概念
  2. 用于在编程语言中表达 "apply this function to that argument" 的语法(例如 "function application is by adjacency in Haskell",或 "function application in Python uses C-like syntax")
  3. 应用函数的特定代码位
  4. 在 Haskell 中 $ 通常被解释为 "the function application operator",因为 f $ x = f x 或多或少是它的定义

或任何相关内容。