Sml 如何获取教会数字的前置词
我正在练习SML,我正在做一个小任务,我们必须实现教会数字,定义为:Sml 如何获取教会数字的前置词,sml,church-encoding,Sml,Church Encoding,我正在练习SML,我正在做一个小任务,我们必须实现教会数字,定义为: datatype 'a church = C of ('a -> 'a) * 'a -> 'a 示例val ZERO = C(fn (f,x) => x) 我已经实现了以下功能: create: int -> 'a church churchToInt: 'a church -> int 和SUC,返回教堂数字的后继数字 现在我必须实现这个功能 PRED: 'a church -&
datatype 'a church = C of ('a -> 'a) * 'a -> 'a
示例val
ZERO = C(fn (f,x) => x)
我已经实现了以下功能:
create: int -> 'a church
churchToInt: 'a church -> int
和SUC
,返回教堂数字的后继数字
现在我必须实现这个功能
PRED: 'a church -> 'a church * 'a church
返回(前置词,当前数字)的元组。我不允许使用churchToInt
,我应该直接使用教堂数字。显然,通过传递一个特定的参数,这一问题在一行中是可以解决的
我想反复使用
SUC
,直到找到正确的数字,但我无法比较这两个教堂数字。我完全无法理解这一点。您必须通过子红色中的int强制它。假设您要构造函数,该函数为您提供N的pred。
你必须在数字上使用配对
像这样(0,1)(1,2)…(n,n+1)
并构造succPair
函数
从(n-1,n)到(n,n+1)
然后在(0,1)上应用succPair
N次
最后一步是对我描述的最后一个结果应用snd
然后砰的一声!您的pred为N
请看这里以获取图片如果这是作业,您应该将其标记为作业