这是我期中考试的一个问题,我不明白该怎么做。
插入括号以阐明它是如何解析的
xyλx.xy
答案是:((x y)(λx。(x y))))
有人可以解释你是怎么做到的吗?
答案 0 :(得分:0)
嗯,首先,这不是答案。 ((x y) (λx.(x y))))
无效,它有一个额外的右括号。
((x y)(λx。(x y))))注意不平衡的括号
但是,我将忽略这一点,假设你的意思是:((x y) (λx.(x y)))
,删除了最后的括号。我不是故意在那里挑选,我相信这可能只是一个错字,我的IDE总是在我的代码下面添加红线来添加或忽略错误地添加一个括号,但我确实认为这应该被指出。
如果问题是以这种形式提供给你的,没有任何其他信息,我会说它可能不是很好,如果我在决赛中看到它会对我产生很大的困扰,因为它有一些含糊之处它。这可以用我能看到的几种有效方式解决,但你提供的答案的更正版本可以说是最干净的。
回顾x y λx.x y
一些语法上有效但包含变量的非等效方法可能是:
((x y) (λx.(x y)))
(x y)(λx.x)y
- 相当于(x y)y
x (y ((λx.x) y) )
- 相当于x (y y)
x (y (λx.(x y)))
在接近问题时,请注意λx.___
是唯一完成的抽象。因此,你知道在λ的左边会有一个左括号,我们有:_x_ _y_(λx._x_ _y_
,一些明显的直觉,基于这样一个事实,即最终的解决方案必须确实是关闭的,并且平衡会提供:{{ 1}}其中(x_ _y_ (λx.(x_ _y)_*
指定一个或多个括号的可能性,无论是打开还是关闭,请参阅_
,它只能是一个右括号。除此之外,只要括号保持平衡,其余的空白就可以以任何方式填充。
我的猜测是:
这里遗漏了一些问题,比如你可能知道或者可以确定一些示例输入和输出,或被告知要做出最清晰的结果(非常主观)
这是一个多项选择题,可以排除其他选项。也许他们没有有效地放置括号,包括过度浪费的括号,如_*
。也许他们显然无效,如((((x y) (λx.(x y)))))
。或者,括号可能是不平衡的,如您原来的(x (y λx))(.x y)
声明,或更夸张,不那么微妙的((x y) (λx.(x y))))
。
在我看来,这会产生一个体面的多项选择问题,或者有更多的信息,有点模糊和开放,但不是太可怕填补空白,提供更多信息。如果按原样给出,我确实遇到了问题,但也许你的教授会接受以合理方式格式化的所有有效答案。如果你提供的答案,包括额外的不平衡的右括号,实际上是他用作正确的答案(可能是多选),那么就有一个更大的问题,因为答案显然是错误的。
很抱歉回答这个问题很晚,希望这个问题对你有用,希望如果有的话,这会有所帮助。