gpt4 book ai didi

lambda - 将 maplist 与没有主体的 lambda 一起使用?

转载 作者:行者123 更新时间:2023-12-03 23:38:19 24 4
gpt4 key购买 nike

有 list List填充数字,我想获得对列表 Pairs ,其中每一对在 Pairs形式为 <number>-0 ,即List的每个数后面应该是 -0 .
我想出了以下解决方案,使用 maplist和一个 lambda:

List = [1,2,30], maplist([X,X-0]>>(!), List, Pairs).
结果: Pairs = [1-0, 2-0, 30-0].虽然这有效,但 lambda [X,X-0]>>(!)对我来说只是看起来很奇怪。
我知道我也可以写 [X,Y]>>(Y=X-0)在正文中有一些“有用”的东西,但我想知道我是否可以在没有“空的 lambda 正文”的情况下编写第一个版本?或者有没有办法在不引入新谓词的情况下完全避免 lambda(我想将解决方案保留在一行)?谢谢!

最佳答案

另一种不那么“侵入性”的可能是

?- List = [1,2,30], maplist([X,X-0]>>true, List, Pairs).
编辑
尝试一个简单的答案

is there a way to avoid the lambda at all


在我旧的天真的解释器中,我没有 maplist/N,因为它基于 Clocksin-Mellish 的第一本书,其中没有引入 call/N。
所以我经常使用这种基于 findall/3 和 member/2 的模式来转换列表。
?- List = [1,2,30], findall(X-0,member(X,List),Pairs).
findall(Template,Goal,ResultList)有点像 Prolog 中列表处理的“瑞士刀”。因为它捕获了 Goal 的所有解决方案关于回溯和复制 Template ,它执行“穷人”垃圾收集,因为证明/变量/跟踪堆栈在 Goal 之间重置调用。

关于lambda - 将 maplist 与没有主体的 lambda 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67946585/

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