在我对依赖型土地永无止境的奇迹中,一个奇怪的想法出现在我的脑海中。我做了很多数据库编程,如果我能摆脱所有那些健全性检查和有效性检查,那就太好了。一个特别烦人的情况是那些接受 Integer 并期望它是某个特定表的有效行 ID 的函数。一个非常愚蠢的例子是:
function loadStudent(studentId: Integer) : Student
假设我选择的语言完全支持依赖类型,是否可以利用类型系统loadStudent
只接受有效值studentId
:
function loadStudent(studentId : ValidRowId("students_table") ) : Student
如果是,我如何为ValidRowId
类型编写数据构造函数?到目前为止,我看到的所有示例都是纯的(不涉及 IO)。