我试图使用maplist通过限制每个元素的长度来过滤元素列表,下面是我尝试过的
maplist(atom_length(2,X),[aa,bb,cc,asd],Result).
ERROR: apply:maplist_/3: Undefined procedure: atom_length/4
ERROR: However, there are definitions for:
ERROR: atom_length/2
我希望能得到
Result = [aa,bb,cc]
需要一点帮助。谢谢。
我在prolog中编写了DCG (形容词短语和介词短语),当我试图运行它时,通过输入ip([every,boy,loved,some,girl]),它从本地堆栈中显示出来。我意识到nbar有问题。有人能帮我吗?非常感谢。
%tree
treeP(Term):-
% Print the tree assuming indentation 0
treeP(0,Term),
% Tidy up with linefeed
nl.
treeP(_N,Tree):-
% Tree is just a variable
var(Tree)
据我所知,Prolog没有任何内置的机制。可以使用统一来模拟泛型,但这需要在运行时进行类型检查:
:- initialization(main).
:- set_prolog_flag(double_quotes, chars).
% this is a "generic" predicate, where A and B have the same type
add(A,B,C) :-
generic_types([A:Type,B:Type]),
(Type = number,
C is A + B;Type=var,C = A+B).
main