gpt4 book ai didi

Haskell Lambda 帮助 - 从 lambda 术语输入中拆分术语

转载 作者:行者123 更新时间:2023-12-04 04:11:48 31 4
gpt4 key购买 nike

我正在尝试创建一个函数,其中给定一个 lambda 项 将返回所有单独的 lambda 项

这是我的findT 函数:

findT :: T -> [T]
findT (V x) = []
findT (L x n) = [] ++ findT n
findT (A n m) = [n] ++ findT m

当我在两个单独的测试中运行此函数时,它适用于第一个但不适用于第二个。

最佳答案

您可以查看 n 是否是一个 Variable,如果是,则不要包含它,例如:

findTerms :: Term -> [Term]
findTerms (Variable x) = []
findTerms (Lambda x n) = findTerms n
findTerms (Apply <b>(Variable _)</b> m) = findTerms m
findTerms (Apply n m) = n : findTerms m

这里如果Apply的第一个参数是Variable _,我们就不会考虑,否则会yield n列表。

您可能还应该递归nm,因为它们也可以包含术语。对于 lambda,您可以返回 lambda 本身:

findTerms :: Term -> [Term]
findTerms (Variable x) = []
findTerms l@(Lambda _ _) = [l]
findTerms (Apply n m) = findTerms n ++ findTerms m

关于Haskell Lambda 帮助 - 从 lambda 术语输入中拆分术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61597463/

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