3.1.1.1 半格、偏序关系与不动点迭代 你有没有在写一个静态分析器时,突然发现——明明所有规则都写对了,控制流图也构建无误,可类型推导结果却在某个循环入口处“卡住不动”?变量 的类型始终是 ,无论迭代多少轮,它都不收敛到更精确的 ;或者更糟:它在第7轮突然从 退化回 ,第11轮又跳成 ,像一只在抽象域里随机弹跳的电子。 这不是 bug。这是你在和偏序结构的几何直觉搏斗。 而今天我们要拆解的,不是教科书里那个“格是具有上确界与下确界二元运算的偏序集”的定义——那是地图,不是路。我们要踩进泥里,亲手拧紧一个关键螺丝:如何让不动点迭代在半格(semilattice)上真正‘稳’下来,且快得像呼吸一样自然。