在“Idris的类型驱动开发”一书中,作者解释了如何创建各种函数。他以一个adder函数为例,它使用第一个参数n: Nat,然后添加n+1个整数参数。为了声明此函数,本书引入了依赖类型AdderType,以便您可以编写:到目前一切尚好。但随后提出了AdderType的以下定义:
AdderType : (nu
关于基本类型的复制/分配,标准是什么?对于类类型,我们有复制构造函数赋值操作符,它将右侧作为引用(它必须是引用,否则就有无限递归): Foo(const Foo &);这是如何为基本类型定义的?请看下面的示例:Foo f = foo;
int b = a;
在这里,f = foo; odr-使用foo,作为复制构造函数引用,对
在维基百科中,被简单地定义为“没有值的类型”。但是,如果b是这个空类型,那么产品类型(b,b)也没有值,但似乎与b不同。我同意底部是无人居住的,但我认为这个房产不足以定义它。现在有一个逻辑的原则,说明从虚假跟随任何命题。用Curry的话说,这意味着forall a. bottom -> a类型是有人居住的(存在一个函数族f :: forall a. bottom -> a ).
f的这些函数是什么?它们是