Вот моя проблема:
etp(V W,[V W|G]).
etp(W V,[V W|G]).
etp(V W,[_|G]):- etp(V W,G).
Пролог говорит Syntax error: Operator expected
. Я пытался избежать пустого символа, такого как '\s'
, "\s"
и пару других возможностей, которые, как я понял, должны работать. Ну ни как не работал должным образом. Как правильно выбрать символ пробела, например: etp(A B,[A B,C D].
Edit:
Список создается следующим образом:
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).
А Пролог говорит Syntax error: Unexpected end of file
. Не знаю, что не так.