繁体   English   中英

Haskell中的术语“函数应用程序”

[英]The term “function application” in Haskell

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

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

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

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


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

“应用”函数与通过提供参数调用它相同。

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

-- Application of f
f 100

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

“功能应用程序”只是功能的应用程序。 在此上下文中的“应用”只是对应于动词“apply”的名词; 它意味着应用某些东西的行为或过程。

“应用某些东西”意味着使用它。 “将A应用于B”意味着使用A对B做某事。因此“应用函数”意味着在某事物上使用/调用函数。 在Haskell中,当我写表达式fx我将f应用于x

因此,“功能应用”只是应用功能的一般概念的术语。 在特定情况下,它可能会被用来谈论:

  1. 一般应用功能的广泛概念
  2. 用于在编程语言中表达“将此函数应用于该参数”的语法(例如“函数应用程序是通过Haskell中的邻接”,或“Python中的函数应用程序使用类C语法”)
  3. 应用函数的特定代码
  4. 在Haskell中, $经常被解释为“函数应用程序运算符”,因为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 = (,)

我让你玩最后的类型。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM