我有一个如下的SICStus脚本。我需要的是打印出当前工作目录(以便能够将该脚本保存在其中)并使用类似load
命令的东西加载该文件。我如何才能完成这一点?最后但并非最不重要的是,我如何才能使up-arrow
在提示符| ?-
之后通过命令历史记录。
sat(Clauses, Vars) :-
problem_setup(Clauses), elim_var(Vars).
elim_var([]).
elim_var([Var | Vars]) :-
elim_var(Vars), (Var = true; Var = false).
problem_setup([]).
problem_setup([Clause | Clauses]) :-
clause_setup(Clause),
problem_setup(Clauses).
clause_setup([Pol-Var | Pairs]) :- set_watch(Pairs, Var, Pol).
set_watch([], Var, Pol) :- Var = Pol.
set_watch([Pol2-Var2 | Pairs], Var1, Pol1):-
watch(Var1, Pol1, Var2, Pol2, Pairs).
:- block watch(-, ?, -, ?, ?).
watch(Var1, Pol1, Var2, Pol2, Pairs) :-
nonvar(Var1) ->
update_watch(Var1, Pol1, Var2, Pol2, Pairs);
update_watch(Var2, Pol2, Var1, Pol1, Pairs).
update_watch(Var1, Pol1, Var2, Pol2, Pairs) :-
Var1 == Pol1 -> true; set_watch(Pairs, Var2, Pol2).
1条答案
按热度按时间drnojrws1#
有几种方法可以询问SICStu它认为当前工作目录是什么。最简单的方法可能是调用
absolute_file_name/2
,并将'.'
作为参数。通常情况下,能够 * 更改 * 工作目录更有用,例如将文件放置到您的文件所在的位置。这可以使用
file_systems
库来完成。以下文字记录显示了上述示例:
您没有说明您使用的是什么操作系统,或者您如何与SICStus顶级交互,因此不清楚您的命令历史记录指的是什么。
在SICStu IDE(SPIDER)中,这是与SICStu交互的推荐方式,顶层视图中有一个菜单,其中也有键盘快捷键,用于访问输入历史。在Emacs Prolog顶层中也有类似的命令,在传统的Windows SICStu窗口中也是如此。
如果你特别希望向上箭头键具有显示以前历史的效果,我认为你可以在SPIDER和Emacs中做到这一点,只要花点功夫,通过将该键重新绑定到相应的命令。
如果您只是从命令行运行
sicstus
(或sicstus.exe
)命令,则SICStus本身没有命令行编辑或历史记录。这取决于您的终端模拟器提供此功能。另一种选择,至少在macOS和Linux上,是一些用户用作sicstus
命令 Package 器的rlwrap工具。我不认为您的代码示例与您的任何问题相关。