我有一个类似于下面的 CSV 文件:即不是 Prolog 格式
james,facebook,intel,samsung
rebecca,intel,samsung,facebook
Ian,samsung,facebook,intel
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个 Prolog 谓词来读取文件并返回一个看起来像的列表
[[james,facebook,intel,samsung],[rebecca,intel,samsung,facebook],[Ian,samsung,facebook,intel]]
Run Code Online (Sandbox Code Playgroud)
在其他谓词中进一步使用。
我仍然是一个初学者,并从 SO 中找到了一些很好的信息并对其进行了修改以查看我是否可以得到它,但我被卡住了,因为我只生成了一个看起来像这样的列表
[[(james,facebook,intel,samsung)],[(rebecca,intel,samsung,facebook)],[(Ian,samsung,facebook,intel)]]
Run Code Online (Sandbox Code Playgroud)
这意味着当我调用内部列表的头部时,我得到(james,facebook,intel,samsung)而不是james.
这是正在使用的代码:-(在 SO 上看到并已修改)
stream_representations(Input,Lines) :-
read_line_to_codes(Input,Line),
( Line == end_of_file
-> Lines = []
; atom_codes(FinalLine, Line),
term_to_atom(LineTerm,FinalLine),
Lines = [[LineTerm] | FurtherLines],
stream_representations(Input,FurtherLines)
).
Run Code Online (Sandbox Code Playgroud)
main(Lines) :-
open('file.txt', read, Input),
stream_representations(Input, Lines),
close(Input).
Run Code Online (Sandbox Code Playgroud)