首页 文章

作为脚本运行prolog

提问于
浏览
1

因此,我有一些Prolog代码可以对变量赋值进行建模,例如在编程语言中,并尝试查看它们是否彼此兼容 . 所以,

assigned(X, X).
and(P, Q) :- P, Q.
or(P, Q) :- P.
or(P, Q) :- Q.

% and then we should test an expression like this:
and(assigned(X, 5), assigned(X, 6)).

因此,最后一个表达式失败,因为 X 无法分配给5和6 .

现在,我想要做的是让这个测试成为一个表达式(可以并且应该硬编码到文件中),然后简单地打印出它是否能够满足 . 但似乎SWIPL真的希望我以交互方式运行 . 理想情况下,这样的事情:

> ./test-assignments
false.

当然这有可能吗?我在这方面已经结束了 .

1 回答

  • 4

    有几种方法可以让SWI-Prolog程序直接从shell运行 . 你可以看看这个问题和答案:

    How to run SWI-Prolog from the command line?

    我个人的偏好现在是这样的文件 example.pl

    :- set_prolog_flag(verbose, silent).
    :- initialization(main).
    
    main :-
        format('Example script~n'),
        current_prolog_flag(argv, Argv),
        format('Called with ~q~n', [Argv]),
        halt.
    main :-
        halt(1).
    

    然后我从命令行运行:

    $ swipl example.pl and a few arguments
    Example script
    Called with [and,a,few,arguments]
    

    初始化指令告诉解释器在加载程序后要评估哪个目标:这里是 main/0 . 名称 main 是一个约定,它可以被称为其他任何东西 .

    请参阅其他选项的链接问题和答案 .

相关问题