## JSON Canvas 概要 JSON Canvas 定义了一种使用 JSON 格式创建可视化画布的结构。一个画布包含两个可选的数组:`nodes` 和 `edges`。 **Nodes(节点)** 代表元素,例如文本、文件、链接或组,并按 z-index(从前到后)排序。每个节点需要一个 `id`、`type`、`x`、`y`、`width` 和 `height`。节点类型具有特定属性:`text` 节点包含 Markdown 文本,`file` 节点链接到文件,并带有可选的子路径,`link` 节点引用 URL,`group` 节点充当容器,并带有可选的标签和背景图像。 **Edges(边)** 使用唯一的 `id` 连接节点,指定 `fromNode`、`toNode` 以及可选的连接侧面 (`fromSide`、`toSide`) 和可自定义的端点 (`fromEnd`、`toEnd`)。边还可以具有 `color` 和 `label`。 **Colors(颜色)** 使用十六进制代码(例如 "#FF0000")或预设数字 1-6(红色、橙色、黄色、绿色、青色、紫色)定义,允许针对特定应用程序的颜色方案。
## 优先类型推断以提供更清晰的错误信息
许多具有强类型推断的语言可能会产生令人困惑的错误信息,因为编译器对类型的假设并不总是与开发者的意图一致。 本提案介绍了一种新的类型推断算法,旨在优先考虑基于开发者*可能*思考代码方式的类型统一,而不是简单地遵循源代码的顺序。
核心思想是摆脱单次自上而下的推断过程,而是利用一系列有序的推断过程——优先考虑“已知应用”(具有预期类型的函数参数)和“已知赋值”,然后再进行不太确定的推断。 这种方法旨在通过反映开发者的心理模型来解决类型歧义。
该算法迭代地完善类型,在每个步骤之后重新运行早期推断过程,以利用新信息。 错误生成被推迟到最终类型检查阶段,确保消息反映了优先的推断。 基准测试显示出有希望的性能,尤其是在具有许多小函数的语言中,这使其成为改善开发者体验的可行方法。