找到没有以下类型的自由变量的lambda terme?

找到没有以下类型的自由变量的lambda terme?,lambda,functional-programming,lambda-calculus,Lambda,Functional Programming,Lambda Calculus,有人能解释一下在没有以下类型的自由变量的情况下寻找lambda terme的过程吗?我对如何解决这个问题有一些想法,但我不确定这是正确的方法 a p->q->q b p->q->q->r->p->r c p->q->q->r->p->q->ra p->q->q 我们需要一些东西来拿p 然后产生一个q->q,我们重复,取一个q,我们唯一能做的就是返回那个q \p -> \q -> q 我们可以添加paren来强调: \p -> (\q -> q) \p2q ->

有人能解释一下在没有以下类型的自由变量的情况下寻找lambda terme的过程吗?我对如何解决这个问题有一些想法,但我不确定这是正确的方法

a p->q->q b p->q->q->r->p->r c p->q->q->r->p->q->r

a p->q->q 我们需要一些东西来拿p

然后产生一个q->q,我们重复,取一个q,我们唯一能做的就是返回那个q

\p -> \q -> q
我们可以添加paren来强调:

\p -> (\q -> q)
\p2q -> (\q2r -> (\p -> q2r (p2q p)))
b p->q->q->r->p->r 我们重复一遍。我们的术语从p到q的函数开始:

它必须返回一个类型为q->r->p->r的函数,所以我们首先返回一个从q到r的函数

我们现在需要它来产生一个给定p的r。只有这么多方法可以将可用的部分组合在一起:

\p2q -> \q2r -> \p -> q2r (p2q p)
同样,用括号强调:

\p -> (\q -> q)
\p2q -> (\q2r -> (\p -> q2r (p2q p)))
c p->q->q->r->p->q->r 嗯,我的命名惯例在这方面有点欠缺

首先,我们的术语采用p->q->q->r:

接下来,我们必须产生一个类型为p->q->r的项,所以我们让它取p,然后取q:

现在生成一个r只需要将我们所拥有的拼凑在一起

\p2q2q2r -> \p -> \q -> ((p2q2q2r p) q) q

希望对你的家庭作业有帮助

这是一个重复的问题,这个问题似乎是离题的,因为它是关于数学的
\p2q2q2r -> …
\p2q2q2r -> \p -> \q -> …
\p2q2q2r -> \p -> \q -> ((p2q2q2r p) q) q