我希望使用maplist / 3实现的目标例如可以是以下伪代码:

maplist(
   lambda X: Z/Y=X, to_lower(Z,LC), char_code(L,LC), return L/Y,
   ['A'/42, 'B'/500],
   Res).
Res = ['a'/42, 'b'/500]

我知道可以写例如
maplist(plus(1), [1,2,3,4], Res).
Res = [2,3,4,5].

所以我可以将伪代码lambda X: Z/Y=X, to_lower(Z,LC), char_code(L,LC), return L/Y定义为普通谓词,然后在maplist中使用该谓词...

但是,我很好奇是否可以在不创建全新谓词的情况下做到这一点?

我之所以想这样做,是因为我觉得阅读起来更自然,而不是在代码中四处寻找谓词

最佳答案

参见 library(lambda)

?- maplist(\ (Z/Y)^(L/Y)^ ( char_code(Z,ZC),
                            to_lower(ZC,LC),
                            char_code(L,LC) ), ['A'/42, 'B'/500], Res).
Res = [a/42, b/500].

关于lambda - 是否可以将maplist/3与“匿名”谓词一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29264913/

10-09 09:04