当我试图将列表传递给Prolog程序时,我在argv中得到一个字符串。我需要从这个字符串中以某种方式恢复列表或找到传递列表的方法。 感谢。
编辑:我尝试过opt_arguments,但是我收到了这个错误:
“错误:validate_opts_spec / 1:输入错误:
flag_value' expected, found
term'(一个原子)(选项'Transactions'中的未知类型'term')”。
答案 0 :(得分:0)
在Linux上:
$ swipl [a,b,c]
Welcome to SWI-Prolog (threaded, 64 bits, version 7.5.1-31-gd53ee81)
...
然后
?- current_prolog_flag(argv, Argv),Argv=[L|_],atom_to_term(L,T,[]).
Argv = ['[a,b,c]'],
L = '[a,b,c]',
T = [a, b, c].
在@Boris评论之后,这是一个更好的方法,从某种意义上说它涵盖了两种情况
$ swipl [a, b, c]
Welcome to SWI-Prolog (threaded, 64 bits, version 7.5.1-31-gd53ee81)
...
?- current_prolog_flag(argv, Argv),atomic_list_concat(Argv,Atom),atom_to_term(Atom,Term,[]).
Argv = ['[a,', 'b,', 'c]'],
Atom = '[a,b,c]',
Term = [a, b, c].