在小型程序中,用户插入多个类型公式并将它们连接在一起,以创建联立方程组。我想介绍运行时类型检查,以便在维度不匹配时报告错误
基本类型可以是任何类型,例如Persons, Money, Money/Period, m^2/s^2
等,并在运行时作为字符串输入
我读到了关于欣德利 - 米尔纳式推理的内容,但认为这有点夸张。
我的想法是依赖两条规则:
首先标记,然后
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
这可以实现为树木行走者,其中每个(+/-) - 节点测试尺寸约束 然后简化产生最终答案
这是解决此问题的好方法吗?