[英]The term “function application” in Haskell
我目前正在学习Haskell,并且曾经多次遇到过“功能应用”这个术语,却没有真正理解它的含义。
有人可以尝试在Haskell中解释这个术语的含义,还是最终解释一下?
“函数应用程序”在这里或多或少意味着“将参数传递给函数”。 例如,如果你有一个函数f :: Int -> Int
和一个x :: Int
那么fx :: Int
是一个表达式,其中表达式x
被“应用”为f
*的参数。
在Haskell中没有用于执行函数应用程序的真正内置运算符(除了将函数与其参数分开的空格之外)。 Prelude
导出($)
函数,这是(除了一些不寻常的奇怪)只是函数应用:ie ($) fx
与fx
相同(这主要用于一些语法技巧,虽然它偶尔也有其他用途)
*:有人向我指出,人们通常会在将函数应用于参数而不是函数的参数方面考虑这一点,我认为这对于理解应用程序的含义并不会有太大的不同。
“应用”函数与通过提供参数调用它相同。
-- A function
f :: a -> a
f x = x
-- Application of f
f 100
它主要是标准的英语用法。
“功能应用程序”只是功能的应用程序。 在此上下文中的“应用”只是对应于动词“apply”的名词; 它意味着应用某些东西的行为或过程。
“应用某些东西”意味着使用它。 “将A应用于B”意味着使用A对B做某事。因此“应用函数”意味着在某事物上使用/调用函数。 在Haskell中,当我写表达式fx
我将f
应用于x
。
因此,“功能应用”只是应用功能的一般概念的术语。 在特定情况下,它可能会被用来谈论:
$
经常被解释为“函数应用程序运算符”,因为f $ x = fx
或多或少是它的定义 或任何相关的。
另一个例子:
data C = A Int Int | B String
f1 :: Int -> Int -> C
f1 = A
f2 :: Int -> C
f2 = A 4
f3 = (4,)
f4 = (,5)
f5 = (,)
我让你玩最后的类型。
所以, A
和B
也是函数, B
正在等待一个String
,并返回一个新类型C
与(,)
元组的构造函数相同的概念。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.