Idris 中一流类型的概念
Concept of First-Classed Type in Idris
当通过 Edwin 的 Type-driven Development with Idris 学习 Idris 时,我了解到 Idris 的独特之处 属性,它的类型是第一个 class构造,与其他编程语言相比,尤其是那些也有依赖类型系统的语言。
书中谈到了这种特性的潜在用途:数据库模式、网络协议描述等
有了这些好处,我的问题有两个:
- 难道不能用一种没有 first-class 类型的依赖类型的语言来完成这些任务吗?
- 这种功能的缺点是什么?为什么其他 systems/languages 中的类型不是第一个 class (例如在 Agda 或 Coq 中)?我认为此功能对程序在编译时可以检查的内容引入了一些理论上的限制,但我不知道它是什么。
或更具体地说:
第一个class类型可以与单纯的依赖类型区分开来的例子有哪些?
我希望同时看到一些积极的例子(好处)和一些消极的例子(它使编译器难以做某事,或其他一些限制)。
当通过 Edwin 的 Type-driven Development with Idris 学习 Idris 时,我了解到 Idris 的独特之处 属性,它的类型是第一个 class构造,与其他编程语言相比,尤其是那些也有依赖类型系统的语言。
书中谈到了这种特性的潜在用途:数据库模式、网络协议描述等
有了这些好处,我的问题有两个:
- 难道不能用一种没有 first-class 类型的依赖类型的语言来完成这些任务吗?
- 这种功能的缺点是什么?为什么其他 systems/languages 中的类型不是第一个 class (例如在 Agda 或 Coq 中)?我认为此功能对程序在编译时可以检查的内容引入了一些理论上的限制,但我不知道它是什么。
或更具体地说:
第一个class类型可以与单纯的依赖类型区分开来的例子有哪些?
我希望同时看到一些积极的例子(好处)和一些消极的例子(它使编译器难以做某事,或其他一些限制)。