我正在尝试编码一个类型级别的图形,对边缘的构造有一些限制(通过类型类)但是当我尝试对构造的图形进行别名时,我遇到了“类型中的非法约束”错误。是什么导致了这个问题?如果它不可行,是否有另一种方法对图形结构进行编码,使其可以按类型构建并折叠以产生图形的值级表示?
编辑:Desiderata
我希望能够约束任何两个操作的input
和output
节点的图形构造。
为了清楚起见,让我们采用长度索引向量的众所周知的情况。
operation
会采用某种形状的input
,并可能将其长度更改为output
的长度。两个operations
之间的边缘需要确保第一个的输出与第二个的输入兼容 - 对于某些实例定义的兼容性概念。 (下面省略了这些约束;应用程序需要依赖类型验证约束并在编译时计算类型。)
为了定义可以与现有操作S
(等)一起使用的新操作T
,只需要添加数据类型{{ 1}},S
的实现以及S _
作为S
类型类实例的函数的必要约束。
Edge