加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何从命令行运行SWI-Prolog?

发布时间:2020-12-15 18:37:42 所属栏目:安全 来源:网络整理
导读:有没有办法创建一个名为hello.pl的prolog脚本,如下所示: #!/usr/local/bin/swipl -q -s -t mainmain:- write('Hello Worldn'). 能够像这样从终端运行吗? $hello.plHello World$ 当我这样做的时候给我这个: hello.pl: line 3: main:-: command not foundh
有没有办法创建一个名为hello.pl的prolog脚本,如下所示:
#!/usr/local/bin/swipl -q -s -t main

main:-
  write('Hello Worldn').

能够像这样从终端运行吗?

$hello.pl
Hello World
$

当我这样做的时候给我这个:

hello.pl: line 3: main:-: command not found
hello.pl: line 4: syntax error near unexpected token `'Hello Worldn''
hello.pl: line 4: `  write('Hello Worldn').'

我可以通过在命令行中写这个来获得它的工作:

$swipl -q -f hello.pl -t main
Hello World
$

但是,有没有办法将直脚本作为可执行文件运行?

编辑

还没有能够让这个工作.以下是他的答案中的评论中提到的@Boris命令的输出:

$ls -l
total 8
-rwxr-xr-x  1 viatropos  staff  235 Aug 26 20:28 example.pl
$cat example.pl
#!/usr/local/bin/swipl

:- 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).
$which swipl
/usr/local/bin/swipl
$swipl --version
SWI-Prolog version 6.6.6 for x86_64-darwin13.1.0
$./example.pl
./example.pl: line 3: syntax error near unexpected token `('
./example.pl: line 3: `:- set_prolog_flag(verbose,silent).'
$

我在Mac OSX 10.9.2,并通过brew安装swipl与homebrew安装swi-prolog –with-libarchive

ISO指令: initialization.这应该工作.
:- initialization main.

main :-
  write('Hello Worldn').

编辑对不起,我跳过了最有趣的细节.这里是一个示例脚本,假设保存在?/ test / main.pl中

#!/home/carlo/bin/swipl -f -q

:- initialization main.

main :-
  current_prolog_flag(argv,format('Hello World,argv:~wn',halt(0).

并执行

chmod +x ~/test/main.pl

然后我得到

~$~/test/main.pl
Hello World,argv:[]

~$~/test/main.pl as,dnj asdl
Hello World,argv:[as,dnj,asdl]

在脚本main.pl中,我使用了源代码构建的swipl路径,没有管理员权限. SWI-Prolog构建过程将bin和lib放在?/ bin和?/ lib下

注意:-f标志禁止加载初始化?/ .plrc,这可能需要更多的“严格控制”执行…

我目前不确定文档页面是否与当前的SW状态是最新的.从some mailing list message起,我自己努力重用thea,似乎命令行标志最近改变了…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读