我对术语重写系统的使用很感兴趣,我发现术语重写“对功能程序的基本推理有所帮助”,但我不明白它的含义。我没有进行过函数式编程,但是我知道主要原理,例如纯函数和不变性。不过,我无法理解基本推理的含义。另外,它与术语重写的倒置有联系吗?
答案 0 :(得分:0)
它们之所以“连接”是因为它们依赖于相同的概念:everything is an expression:
在术语重写中,通过搜索表达式中的模式,然后将匹配的表达式(或子表达式)更改为其他表达式(重写)来执行计算。作为一个非常简单的示例,可以将表达式2 + 3
转换为表达式5
,因为存在一个重写规则(我们称为“数字加法”),该规则知道如何执行这种转换。 / p>
在函数式编程语言中,函数是语言的“头等公民”,可以说是“一切都是表达式,包括函数”。因此,可以将函数指定为函数(或过程)调用的参数,或者函数(或过程)可以返回函数(higher-order functions),就像使用原始类型一样。
< / li>另外,因为在术语重写中,“一切都是表达式”,所以每个术语都必须产生一个值,就像一个函数一样,因此按术语重写进行的计算可以看作是函数的连续应用。