文件流操作PROLOGPROLOG文件流操作;处理
我工作的学术建议,一个基于案例推理 子系统项提取 能够采取新的学生档案(副本) 并将其与student_profiles数据库在 为了找到最佳匹配,如果不是完全匹配。
我仍然不是很熟悉的语言和 我试图打开一个文件,并提取 一个明确的始发假设
student_profile/4 : student_profile(L1, name, L2, L3)
这是在student.pl
找到。
一旦我从特等文件中提取的谓语,我希望能够 将其分配给一个变量,并把它分解 这样我就可以提取的第一个参数(在这种情况下L1
)以 做一些计算。
这是我到目前为止有:
我已经打开了文件,我能看到学生的个人资料或成绩单发现谓词 的完整列表。
load :- open('h:/AAS/Novel_Profiles/vivian.pl', read, Stream),
read(Stream, X),
read_data(Stream, X, StudentP),
write(StudentP),
close(Stream).
read_data(_Stream, end_of_file, []) :- !.
read_data(Stream, X, [X|StudentP]) :-
read(Stream, Y),
read_data(Stream, Y, StudentP).
我已经看过了如何提取一个术语,用它作进一步处理的例子,但我有 没有运气(或者也许我没有使用正确的术语)。
任何帮助将不胜感激。
感谢您的快速反应,会是这样的情况,如果我想查询相同的程序将适用程序内的数据?就像在关闭流member_sp(StudentPred,StudentData)之前添加类似的东西,当然在底部定义这样的东西? – user1308665 2012-04-02 22:59:25
是的,像Prolog这样的解释器使用REPL(Read,Eval,Print,Loop)作为程序开发的一般方法。 – CapelliC 2012-04-03 05:45:25
谢谢你的帮助,我还想问一件事。这看起来很简单,但我不太明白。一旦我读完文件;我需要的数据有一个复合项的形式:[student_predicate([2d vector],vivian,[taken(courses),...],[])| _A]。有没有什么方法可以将术语的结构放下来,并分配给各个变量进行处理,如:V = [Vector],Name = vivian,Courses = [taken(courses),...],Recommendations = [] ?我想从一个脚本中完成。我一直在寻找(unvi)= ../2和functor/3 – user1308665 2012-04-04 06:02:17