gpt4 book ai didi

algorithm - 什么是枚举 lambda 项的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:21 25 4
gpt4 key购买 nike

按长度顺序枚举 lambda 演算表达式的算法是什么?比如(λx.x), (λx.(x x)), (λx.(λy.x))等等?

最佳答案

作为长度,我会在这个(无类型的)lambda 表达式的 BNF 中选择 T-expansions(“深度”)的数量:

V ::= x | y
T ::= V |
λV.T |
(T T)

在 python 中,您可以按照上述生成规则为给定变量和给定深度定义一个生成器,如下所示:

def lBNF(vars, depth):
if depth == 1:
for var in vars:
yield var
elif depth > 1:
for var in vars:
for lTerm in lBNF(vars,depth-1):
yield 'l%s.%s' % (var,lTerm)
for i in range(1,depth):
for lTerm1 in lBNF(vars,i):
for lTerm2 in lBNF(vars,depth-i):
yield '(%s %s)' % (lTerm1,lTerm2)

现在您可以枚举给定深度的 lambda 项:

vars = ['x','y']
for i in range(1,5):
for lTerm in lBNF(vars,i):
print lTerm

关于algorithm - 什么是枚举 lambda 项的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com