Idris 语言文档 Version 1.3.1where constructor ClassInfo students : Vect n Person className : String 将 students 的字段更新为不同长度的向量是安全的,因为它不会影响该记录的类型: addStudent : Person -> Class -> Class addStudent p c = record { students = p :: students 若它是偏函数,那么只要它不崩溃或进入无限循环,就会返回一个 String。 奉 奤 奲 奩 女 对此作了区分,因此它知道在进行类型检查(正如我们在 一等类型 夨 姩 妡妵 夸天 一节所见)的时候,哪 些函数可以安全地求值。毕竟,若它在类型检查时试图对一个不终止的函数求值, 那么类型检查将无 法终止!因此,在类型检查时只有全函数才会被求值。偏函数仍然可在类型中使用, 但它们不会被进 一步求值。 1. 4 接 接 就是说: 先用依赖类型描述一个 目 目 目标 标 标语 语 语言 言 言 及其类型系统,保证只有良类型的程序可被表示, 然后再通过这种方 式表示程序。通过这种方式,我们可以编写序列化二进制数据2 或安全运行并发过程3 的程序。 然而,目标语言的形式使其难以在实践中编程。回想一下用 Expr 编写的阶乘程序: fact : Expr G (TyFun TyInt TyInt) fact = Lam1 魔豆 | 224 页 | 2.06 MB | 2 年前3
共 1 条
- 1










