4

在一个小程序中,用户插入多个键入的公式并将它们连接在一起,以创建一个联立方程系统。并且我想引入运行时类型检查,以便在尺寸不匹配时报告错误

基本类型可以是任何东西,例如Persons, Money, Money/Period, m^2/s^2等,并在运行时作为字符串输入

我阅读了有关 Hindley-Milner 类型推断的信息,但认为它有点夸大了。

我的想法是依赖两个规则:

先分词,然后

If (a + b) or (a-b) the dimensions must match! [a] = [b]

如果 a*b 则维度是“扩展”或“收缩”,因为您跟踪单个维度的计数,例如

Person/Year * Money/Year * Money*Year^2 ===> Money(2) Person(1) Year(2) / Year(1)

然后减去单个计数,从而Money(2) Person(1) Year(1)留下final type

这可以实现为 tree walker,其中每个 (+/-) 节点测试维度约束,然后简化以产生最终答案

这是解决这个问题的好方法吗?

4

0 回答 0