我正在练习 SML,我正在做一个小任务,我们必须实现教堂数字,定义为:
datatype 'a church = C of ('a -> 'a) * 'a -> 'a
示例值
ZERO = C(fn (f,x) => x)
我已经实现了以下功能:
create: int -> 'a church
churchToInt: 'a church -> int
并SUC
返回 Church 数字的后继。
现在我必须实现该功能
PRED: 'a church -> 'a church * 'a church
它返回 (predecessor, current numeric) 的元组。我不允许使用churchToInt
,我应该直接使用 Church 数字。显然,这可以通过传递特定参数在一行中解决。
我一直在考虑SUC
一遍又一遍地使用,直到我们找到正确的数字,但我无法比较 2 个 Church 数字。我完全坚持这一点。