2017-02-17 2 views
0

私はPrologでライト述部を調べていましたが、時々動作が異なります。私はsome postsを通過しましたが、私はキャッチを見つけることができません。Prologでライト述部を使用中にエラーが発生しました

述語:

explore_write_predicate(InputList,Index):- 
    TempIndex is Index+1, 
    select(Element,InputList,TempList), 
    write(TempIndex). 

クエリ:

explore_write_predicate([1,2,3,4],1). 

結果:

2 
true 

上記のコードは正常に動作しますが、私は書き込み述語(要素への1つの以上の引数を追加するとき)、エラーが発生します。

述語:

explore_write_predicate(InputList,Index):- 
    TempIndex is Index+1, 
    select(Element,InputList,TempList), 
    write(TempIndex,Element). 

クエリ:

explore_write_predicate([1,2,3,4],1). 

がエラー:

No permission to call sandboxed `write(_1132,_1134)' 
Reachable from: 
     explore_write_predicate(A,B) 
     swish_trace:swish_call(explore_write_predicate([1,2,3,4],1)) 
     '$swish wrapper'(explore_write_predicate([1,2,3,4],1),A) 

なぜこの異常私を助けてください。 P.S私は書面のための文書も見ましたが、それほど多くを得ることはできませんでした。 何か助けていただければ幸いです。

+0

ライトは1のアリティを持ちます。それを動作させるには 'write([TempIndex、Element])'と呼び出す必要があります。 – Enigmativity

+0

または 'write(TempIndex = Element)' – CapelliC

+0

いずれにしても、代わりに 'writeq'を真剣に使うことを考えてください! – false

答えて

0

あなたのエラーが二つある:

は主に、あなたが入力/出力メソッドの数を離れてロック選択のあなたの通訳、などSWISHを使用しているように見える(tab/1write/2get_single_char/1put/1などを含みます。)ので、あなたはそれらを使用することができなくなります。

第2に、第2引数が書き込まれる第1引数としてストリームが必要です。コメントに記載されているように、項目をリストとして渡すか、複数の書き込みを使用するかのどちらかです。

+0

ありがとうございました!! –

関連する問題