为什么参数声明重要[#102]
若只知道a是scalar,系统无法推出它对x的导数为零。参数值的声明明确表达它相对独立坐标保持不变:
result requirements: ((differentiable (+ (^ (var x) (num "3")) (* (var a) (* (var x) (var y))))) (coordinate (var x)) (coordinate (var y)) (parameter (var a)) (differentiable (^ (var x) (num "3"))) (differentiable (var x)) (differentiable (* (var a) (* (var x) (var y)))) (differentiable (var a)) (differentiable (* (var x) (var y))) (differentiable (var y)))
偏导结果保留来源值的语义条件。之后复用结果时,调用者仍须提供适合当前计算的事实;不会因为以前某次计算声明过参数,就永久污染全局状态。