4.3.2.2 数据导向编程 你有没有在深夜调试一个 Clojure 服务时,突然发现——明明 和 写得严丝合缝,可偏偏某个新接入的第三方支付渠道(比如“云闪付·跨境版”)的回调数据一进来,就抛出 ?你翻遍 声明、检查 函数返回值、甚至用 宏确认所有 method 都已加载……一切看似无懈可击。可它就是不工作。 不是语法错,不是拼写错,不是命名空间没 require——是 dispatch 值在运行时被悄悄“污染”了。 这不是偶然。这是 Clojure 数据导向编程(Data-Directed Programming)在真实系统中落地时,最隐蔽、最顽固、也最容易被教科书忽略的类型漂移陷阱(Type Drift Trap)。