将文件读入列表 [prolog]
read a file into a list [prolog]
我有包含 4 个不同术语的日志条目。
log(name1,surname1,street1,Belgium).
log(name2,surname2,street2,Germany).
log(name3,surname3,street3,France).
log(name4,surname4,street4,France).
我将其保存到 loginfo.pl。我可以设法从输入文件 (loginfo.pl) 中读取这些,但是我无法在 "list" 中收集所有内容。之后我需要使用条件“国家以字母 [=19 开头”来过滤它=].
所以最后我想得到
[log(name3,surname3,street3,France),log(name4,surname4,street4,France)]
使用consult/1
加载prolog KB中文件中包含的事实。
使用 atom_chars/2
将原子拆分为其字符。
使用findall/3
收集一个目标的多个解决方案。
示例:
?- [loginfo].
?- findall(log(A,B,C,D), (log(A, B, C, D), sub_atom(D, 0, 1, _, 'F')), Result).
Result = [log(name3, surname3, street3, 'France'), log(name4, surname4, street4, 'France')].
[loginfo]
是 shorthand 对于 consult(loginfo)
。
此外,如果您不想重复自己的话:
?- findall(X, (X=log(_, _, _, D), X, sub_atom(D, 0, 1, _, 'F')), Result).
Result = [log(name3, surname3, street3, 'France'), log(name4, surname4, street4, 'France')].
注意:在您的文件 loginfo.pl
中,您应该在以大写字母开头的原子周围加上单引号:
log(name1,surname1,street1,'Belgium').
log(name2,surname2,street2,'Germany').
log(name3,surname3,street3,'France').
log(name4,surname4,street4,'France').
阅读更多关于序言原子的信息
我有包含 4 个不同术语的日志条目。
log(name1,surname1,street1,Belgium).
log(name2,surname2,street2,Germany).
log(name3,surname3,street3,France).
log(name4,surname4,street4,France).
我将其保存到 loginfo.pl。我可以设法从输入文件 (loginfo.pl) 中读取这些,但是我无法在 "list" 中收集所有内容。之后我需要使用条件“国家以字母 [=19 开头”来过滤它=].
所以最后我想得到
[log(name3,surname3,street3,France),log(name4,surname4,street4,France)]
使用consult/1
加载prolog KB中文件中包含的事实。
使用 atom_chars/2
将原子拆分为其字符。
使用findall/3
收集一个目标的多个解决方案。
示例:
?- [loginfo].
?- findall(log(A,B,C,D), (log(A, B, C, D), sub_atom(D, 0, 1, _, 'F')), Result).
Result = [log(name3, surname3, street3, 'France'), log(name4, surname4, street4, 'France')].
[loginfo]
是 shorthand 对于 consult(loginfo)
。
此外,如果您不想重复自己的话:
?- findall(X, (X=log(_, _, _, D), X, sub_atom(D, 0, 1, _, 'F')), Result).
Result = [log(name3, surname3, street3, 'France'), log(name4, surname4, street4, 'France')].
注意:在您的文件 loginfo.pl
中,您应该在以大写字母开头的原子周围加上单引号:
log(name1,surname1,street1,'Belgium').
log(name2,surname2,street2,'Germany').
log(name3,surname3,street3,'France').
log(name4,surname4,street4,'France').
阅读更多关于序言原子的信息