Prolog中的命令行参数向量?

时间:2012-04-28 16:20:38

标签: prolog

它们存在吗?我编写了一个解决数独难题的程序,需要3个步骤才能运行。

> prolog
> consult(sudoku).
> solve(puzzle).

我正在寻找一种方法来做像

这样的事情
> prolog puzzle

并完成它。在Prolog中有没有办法做到这一点?或者我是否必须用C或其他语言编写一些帮助程序来使用

> ./solve puzzle

任何帮助将不胜感激。对Prolog来说仍然是新手,并且无法找到好的文档。

3 个答案:

答案 0 :(得分:3)

这取决于您使用的Prolog系统。大多数Prolog系统都有一个命令行 开始可以提供一个初步的Prolog文本进行咨询和 最初的Prolog目标将被运行。

以下是一些例子,我将咨询结合起来并融入了一个联合目标:

SWI-Prolog

> swipl -t ['sudoku.p'],puzzle

GNU Prolog

> gprolog --entry-goal ['sudoku.p'],puzzle,halt

Jekejeke Prolog

> java -jar interpreter.jar -t ['sudoku.p'],puzzle

最好的问候

答案 1 :(得分:2)

使用-g标志可以让Prolog在进入顶级之前执行您选择的目标。默认值是一个打印欢迎消息的谓词。此外,您可能希望使用-t标志来替换您选择的默认目标prolog / 0作为交互式顶级。

另见the manual

答案 2 :(得分:0)

使用optparse

例如,如果您的程序是:

main :-
    opt_arguments([], _, Args),
    write(Args).

然后你像 ./program 1 foo 一样运行它 程序会写 [1,foo]