Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 左边没有抽象的应用程序的含义是什么?_Math_Lambda Calculus - Fatal编程技术网

Math 左边没有抽象的应用程序的含义是什么?

Math 左边没有抽象的应用程序的含义是什么?,math,lambda-calculus,Math,Lambda Calculus,可以是: 变数 lambda抽象(例如\x.t) 应用程序。如果t和s是,则ts是一个应用程序 因此,左侧部分带有抽象的应用程序(例如(\x.t)a)看起来不错。它看起来像是函数调用。但当左边部分是变量或其他应用程序时,应用程序意味着什么?如果a和b是变量,((\x.x)a)b或a(\x.x)是什么意思?(\x.x)b)c是一个函数应用程序。这里它将b应用于c ((\x.x)b)c = bc a(\x.y)是一个函数应用程序,将函数a应用于其唯一的参数,该参数恰好是一个函数,即返回y(自由

可以是:

  • 变数
  • lambda抽象(例如
    \x.t
  • 应用程序。如果
    t
    s
    是,则
    ts
    是一个应用程序
因此,左侧部分带有抽象的应用程序(例如
(\x.t)a
)看起来不错。它看起来像是函数调用。但当左边部分是变量或其他应用程序时,应用程序意味着什么?如果
a
b
是变量,
((\x.x)a)b
a(\x.x)
是什么意思?

(\x.x)b)c
是一个函数应用程序。这里它将
b
应用于
c

((\x.x)b)c
= bc
a(\x.y)
是一个函数应用程序,将函数
a
应用于其唯一的参数,该参数恰好是一个函数,即返回
y
(自由变量)的函数

lamdba演算的一个特点是函数可以很容易地应用于函数,并且函数可以将其他函数作为参数。您的两个示例很好地说明了这两种情况


编辑lambda演算有(至少)两种版本:非类型化和类型化。在这里使用的非类型化演算中,任何东西都可以应用于任何东西。在类型化演算中,存在非函数的基本类型,例如命题类型和“个体”类型因此,如果
a
的类型是将
b
的类型映射到某个对象的函数类型,那么你只能编写
ab

因此,如果
a
b
是变量,那么
ab
的类型就不正确了?我编辑了答案,想说一些关于类型的事情。如果您的表达式来自非类型的lambda演算,那么无需担心。