请参见官方用户手册获取此页面上信息的最新版本。

总有机碳

编写函数类型(x:A)->B,或在非依赖函数的情况下A->B例如,自然数加法函数的类型为

自然->自然->自然

向量的加法函数的类型为:

(A:集合)->(n:自然)->(u:血管A n)->(v:血管A n)->血管A n

哪里设置是集合的类型兽医是向量的类型n个类型的元素A类.表格连续假设之间的箭头(x:A)也可以省略,以及(x:A)(y:A)可以缩写为(x y:A):

(A:设置)(n:自然)(u v:血管A n)->血管A n

函数由lambda抽象构造,可以是类型化的,也可以是非类型化。例如,下面的两个表达式都有类型(A:设置)->A->A(第二个表达式也会检查其他类型):

\(A:设置)(x:A)->x\A x->x

应用程序编写为金融资产负债表哪里(f)是一个函数,并且,b条c(c)都是参数。

函数声明

定义函数的一般形式是

f:(x1:A1) -> ... -> (x)n个:An个)->B法珀1…pn个=天...f q(平方英尺)1…问题n个=电子

哪里(f)是新标识符,A类是一种类型,B类是一种假设变量x个具有类型A类,p_iq_i是模式和d日e(电子)是表达式。

上面的声明给出了标识符(f)类型(x)1:A1)->…->(x)n个:An个)->B(f)由定义方程定义。模式从上到下进行匹配,即与实际参数匹配的第一个模式就是使用的模式。

抽象

类型中的对象(x:A)->B始终等于

\x->b

哪里乙:乙假设x:A.

也可以使用类型化抽象:

\(x:A)->b

是上述抽象的另一种表示法,如果变量的类型x个A类.

应用程序

函数的应用f:(x:A)->B争论答:答已写入财务报表这种类型是B[x:=a]

符号惯例

可以使用以下符号约定

  • 函数类型
(x:A)(y:B)->C与(x:A)->(y:B)->C相同(xy:A)->C与(x:A)(y:A)->C相同对于所有(x:A)->C与(x:A)->C相同对于所有x->C与(x:_)->C相同有孔虫x->C与有孔虫x->有孔虫y->C相同

您还可以使用Unicode符号(类型“\全部“在Emacs Agda模式下),而不是对于所有人.

  • 函数抽象
\x y->e与\x->(\y->e)相同
  • 功能性应用
f a b与(f a)b相同

模式匹配lambdas。

可以使用语法定义匿名模式匹配函数

\{p11..p1n->e1;…;pm1..pmn->em}

(其中,和往常一样,\和->可以替换为λ和→). 内部这被转换为以下形式的函数定义:

.extlam第11页。。p1n=e1....extlam pm1。。pmn=em

这意味着匿名模式匹配函数是生成性的。例如,ref不会被接受为该类型的居民

(λ{真真;假})≡(λ{真真;错误}),

因为对于一些不同的新名称extlam1和extlam2。

目前,“where”和“with”结构不允许出现在(的顶级子句)匿名模式匹配函数。

示例:

和:布尔布尔布尔和=λ{真xx;错误_错误}xor:布尔布尔布尔xor=λ{真-真; 假假; _     _     真的}fst:{A:Set}{B:A集合}∑A BA类fst=λ{(a,b)一个}snd:{A:Set}{B:A集合}(p:∑A B)B(fst p)snd=λ{(a,b)b}(b)

与通常的布局规则不同,模式匹配lambda的{…}块不能用缩进替换。

页面上次修改时间:2018年12月14日下午03:57
技术支持私人维基