我知道等式推理(https://wiki.haskell.org/Equational_reasoning_examples#Equational_reasoning)是代码片段可以在任何上下文中被其他代码替换,但我真的很好奇它的名称是什么?等式推理"来自?我用谷歌搜索了它,但找不到任何相关的答案。
答案 0 :(得分:7)
它实际上并不是一个真正的名称,只是通过重复使用而变得标准化的描述。 “等式推理”只是推理“等式”;即它涉及方程式。
所涉及的想法是这一系列的重写:
fmap even . fmap (+1)
fmap (even . (+1))
fmap (\x -> even (x +1))
fmap odd
涉及与此系列重写相同的种:
(x + 1)(x - 1)
x^2 + x - x - 1
x^2 - 1
在这两种情况下,您都使用了一般知道的fmap f . fmap g = fmap (f . g)
或(a + b)(c + d) = ac + ad + bc + bd
等公式,并使用它们将您的术语转换为可证明等效的术语。 方程式是关键,以前被证明可以容纳(理想情况下是其他人;))。