2017-03-28 12 views
0

リストをPrologプログラムに渡そうとすると、argvに文字列があります。私は何とかこの文字列からリストを回復するか、リストを渡す方法を見つける必要があります。おかげさまで プロローグでargvを解析する方法

編集:私はopt_argumentsを試みたが、私はこのエラーを得た:Linuxの

"ERROR: validate_opts_spec/1: Type error: flag_value' expected, found term' (an atom) (unknown type 'term' in option 'transactions')".

+1

あなたはどういう意味かはっきりしない...どのようにプログラムを呼び出すのですか?コマンドラインから?あなたは常にargvのアトムのリストを取得します。それはどのように文字列ですか?あなたは何のリストが必要ですか?等々。 –

答えて

0

:@Borisのコメントの後

$ 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]. 

を、ここにより良い方法です、意味で両方のケースをカバーします

$ 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]. 
+0

'$ swipl [a、b、c]'があれば、これは既に壊れています。しかし、問題はあなたの答えではなく、質問です... –

関連する問題