通过GADT和DataKinds的类型级图

时间:2017-07-18 17:35:22

标签: haskell gadt data-kinds

我正在尝试编码一个类型级别的图形,对边缘的构造有一些限制(通过类型类)但是当我尝试对构造的图形进行别名时,我遇到了“类型中的非法约束”错误。是什么导致了这个问题?如果它不可行,是否有另一种方法对图形结构进行编码,使其可以按类型构建并折叠以产生图形的值级表示?

编辑:Desiderata

我希望能够约束任何两个操作的inputoutput节点的图形构造。

为了清楚起见,让我们采用长度索引向量的众所周知的情况。

operation会采用某种形状的input,并可能将其长度更改为output的长度。两个operations之间的边缘需要确保第一个的输出与第二个的输入兼容 - 对于某些实例定义的兼容性概念。 (下面省略了这些约束;应用程序需要依赖类型验证约束并在编译时计算类型。)

为了定义可以与现有操作S(等)一起使用的新操作T,只需要添加数据类型{{ 1}},S的实现以及S _作为S类型类实例的函数的必要约束。

Edge

gist here

0 个答案:

没有答案