foldl1 的序言实现
Prolog Implementation of foldl1
我正在尝试在不使用内置 foldl 谓词的情况下在 prolog 中实现 foldl1。
我的代码生成 Syntax error: Operator expected
:
foldl1(_, [E], E).
foldl1(Predicate, [X,Y|Z], Result) :-
call(Predicate(X), Y, Ans),
foldl1(Predicate, [Ans|Z], Result).
我预计:
?- foldl1(concat,['a','b','c','d'],X).
X = abcd.
谢谢!
Predicate(X)
确实是无效语法(在标准 Prolog 中),复合术语的名称不能是变量。改用:
foldl1(_, [E], E).
foldl1(Predicate, [X,Y|Z], Result) :-
call(Predicate, X, Y, Ans),
foldl1(Predicate, [Ans|Z], Result).
我正在尝试在不使用内置 foldl 谓词的情况下在 prolog 中实现 foldl1。
我的代码生成 Syntax error: Operator expected
:
foldl1(_, [E], E).
foldl1(Predicate, [X,Y|Z], Result) :-
call(Predicate(X), Y, Ans),
foldl1(Predicate, [Ans|Z], Result).
我预计:
?- foldl1(concat,['a','b','c','d'],X).
X = abcd.
谢谢!
Predicate(X)
确实是无效语法(在标准 Prolog 中),复合术语的名称不能是变量。改用:
foldl1(_, [E], E).
foldl1(Predicate, [X,Y|Z], Result) :-
call(Predicate, X, Y, Ans),
foldl1(Predicate, [Ans|Z], Result).