文件名称:inch:具有整数约束的 Haskell 类型检查器
文件大小:98KB
文件格式:ZIP
更新时间:2024-07-13 07:37:37
Haskell
英寸 Inch是 Haskell 子集(加上一些 GHC 扩展)的类型检查器,并添加了整数约束。 在成功对源文件进行类型检查后,它会输出一个删除了类型级整数的操作等效版本,因此它可以用作编译程序的预处理器。 这是一个非常粗糙和现成的原型。 许多 Haskell 功能缺失或实现不佳。 安装 cabal install inch 特征 用于类型级整数的新类型Integer ,以及用于限制为非负整数的同义词Nat 类型级别的加、减、乘和幂运算(再加上一些) 上下文包含数字相等和不等式约束 受 SHE 预处理器启发的 Π 类型(来自整数的依赖函数),它擦除相应的非依赖函数 Guards 可以测试数字约束并使这些信息可用于类型检查(如下面的plan ) 强大的类型推断,使用新颖的等式统一方法(尽管 GADT 模式匹配和多态递归需要类型签名) 例子 以下程序定义了一种向量类型(按长度索引的列
【文件预览】:
inch-master
----Setup.hs(46B)
----data()
--------Prelude.inch(9KB)
----src()
--------Language()
----LICENSE(1KB)
----examples()
--------State.hs(866B)
--------RedBlackCost.hs(14KB)
--------Vectors.hs(4KB)
--------Layout.hs(13KB)
--------Units.hs(4KB)
--------InchPrelude.hs(15KB)
--------Subst.hs(1KB)
--------Cost.hs(2KB)
--------NonlinearCost.hs(2KB)
--------RedBlack.hs(13KB)
--------Queue.hs(2KB)
--------MergeSort.hs(2KB)
--------Wires.hs(7KB)
----README.md(8KB)
----tests()
--------Main.lhs(44KB)
----inch.cabal(3KB)
----dev()
--------Paths_inch.lhs(113B)