Haskell中的术语"函数应用程序"

Mr.*_*ind 6 haskell terminology

我目前正在学习Haskell,并且曾经多次遇到过"功能应用"这个术语,并没有真正理解它的含义.

有人可以尝试在Haskell中解释这个术语的含义,还是最终解释一下?

Cub*_*bic 8

"函数应用程序"在这里或多或少意味着"将参数传递给函数".例如,如果你有一个函数f :: Int -> Int,x :: Int则then f x :: Int是一个表达式,其中表达式x被"应用"为f*的参数.

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


*:有人向我指出,人们通常会在将函数应用于参数而不是函数的参数方面考虑这一点,我认为这对于理解应用程序的含义并不会有太大的不同.

  • 我会说它是相反的:`f`(函数)应用于`x`(参数). (10认同)
  • "功能应用程序"来自数学,"x应用于f"只是不正确的用法(就像你不将你的皮肤应用于乳液一样),所以我建议只改变答案.另一个好处是可以明确地指出,当谈到"函数应用程序"时,我们谈论的是一个特定的_syntactic construct_(即_function application_是GHC解析器理解的东西),而不是例如程序评估的属性. (2认同)

Ben*_*Ben 5

这主要是标准的英语用法。

“函数应用”只是函数的具体应用。本文中的“应用”只是与动词“应用”相对应的名词;它意味着应用某物的行为或过程。

“应用某物”意味着使用它。“将 A 应用到 B”意味着使用 A 对 B 执行某些操作。因此“应用函数”意味着在某些事物上使用/调用该函数。f x在 Haskell 中,当我编写我要应用的f表达式时x。

因此,“函数应用”只是应用函数的一般概念的术语。在特定的上下文中,它可以用来谈论:

  1. 一般应用函数的广泛概念
  2. 用于在编程语言中表达“将此函数应用于该参数”的语法(例如“Haskell 中的函数应用是通过邻接”,或“Python 中的函数应用使用类似 C 的语法”)
  3. 应用函数的特定代码位
  4. 在 Haskell 中$通常被解释为“函数应用运算符”,因为f $ x = f x或多或少是它的定义

或者任何相关的东西。