Haskell Arrows通常被解释为表达计算的有向无环图(DAG)。我正在寻找可以使用这种关系的工具或库代码来帮助编写Arrows。
从箭头到图形,工具可以帮助可视化箭头代码。由于代码对应于计算的DAG,因此显示计算节点和输出到输入边缘的视觉表示是自然的。工具可以使用标准图形工具创建要查看和操作的图形。
是否有Arrow变换器增强任意计算Arrow类,捕获>>>提供的结构和***操作,并使得可以检查计算作为基本箭头操作的图形?
从图形到箭头,假设有一个DAG,其节点是箭头操作。是否有一个工具可以从这个构建整个DAG的箭头构建?
我在Google上搜索了大量有关Haskell Arrows的内容而没有找到这样的可视化工具。我错过了什么?也许没有我想象的那么自然。
答案 0 :(得分:8)
一个很好的起点是使用所谓的“免费Arrow
”来指定箭头图。您可以找到一个免费Arrow
s in this Stack Overflow answer的实现。可以将其视为Arrow
图表的语法表示。
free Arrow
的好处在于它们保留了图形的结构,然后可以将其显示为图表。显示连接图后,您可以使用解释器将免费Arrow
转换为所需的Arrow
。免费Arrow
的一个不错的属性是,根据定义,这样的解释器必须是唯一的(直到同构)(这是使其“自由”的属性之一)。