这是我的问题:
etp(V W,[V W|G]).
etp(W V,[V W|G]).
etp(V W,[_|G]):- etp(V W,G).
Prolog说Syntax error: Operator expected
。我试图逃避像'\s'
,"\s"
这样的空白符号,并结合我认为可行的其他可能性。好吧,两者都没有正常工作。什么是逃避空间角色以匹配的正确方法,例如:etp(A B,[A B,C D].
编辑: 列表按以下方式创建:
read_line(L,C) :-
get_char(C),
(isEOFEOL(C), L = [], !;
read_line(LL,_),% atom_codes(C,[Cd]),
[C|LL] = L).
%Tests if character is EOF or LF.
isEOFEOL(C) :-
C == end_of_file;
(char_code(C,Code), Code==10).
read_lines(Ls) :-
read_line(L,C),
( C == end_of_file, Ls = [] ;
read_lines(LLs), Ls = [L|LLs]
).
所以它读取的输入看起来像
A B
C D
E F
G H
read_lines(L)
返回L = [[A ,, B],[C ,, D],[E ,, F],[G ,, H]]。
这就是我如何获得它们之间的空间。
好吧,我实际上需要将, ,
替换为-
,我试图这样做:
read_line(L,C) :-
get_char(C),
( (char_code(C,Code), Code == 32)
-> C = '-'
; C = C),
(isEOFEOL(C), L = [], !;
read_line(LL,_),% atom_codes(C,[Cd]),
[C|LL] = L).
Prolog说Syntax error: Unexpected end of file
。不知道什么是错的。