2017-02-17 1 views
0

Ich untersuchte das Schreibprädikat in Prolog, aber es verhält sich manchmal anders. Ich bin durch some posts gegangen, aber ich bin nicht in der Lage, den Fang zu erkennen.Fehler bei der Verwendung des Schreibprädikats in Prolog

Prädikat:

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

query:

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

Ergebnis:

2 
true 

Der obige Code funktioniert gut, aber wenn ich hinzufügen, ein weiteres Argument für das Schreib Prädikat (Element) es gibt einen Fehler.

Prädikat:

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

query:

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

Fehler:

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) 

Bitte helfen Sie mir diese Anomalie, warum. P. Ich sah auch die Dokumentation zum Schreiben, konnte aber nicht viel daraus machen. Jede Hilfe wird sehr geschätzt.

+0

Schreiben hat nur eine Priorität von 1. Sie müssen es 'write ([TempIndex, Element])' nennen, damit es funktioniert. – Enigmativity

+0

oder 'write (TempIndex = Element)' – CapelliC

+0

In jedem Fall: ernsthaft in Erwägung ziehen, stattdessen 'writeq' zu verwenden! – false

Antwort

0

Ihr Fehler ist zweifach:

In erster Linie erscheinen Sie SWISH als Dolmetscher der Wahl zu verwenden, die eine Anzahl von Ein-/Ausgabeverfahren sperren weg (einschließlich tab/1, write/2, get_single_char/1, put/1, etc .), damit Sie sie nicht benutzen können.

Zweitens, write/2 erfordert einen Strom als erstes Argument, auf das das zweite Argument geschrieben wird - wie in einem Kommentar erwähnt, um mehrere Dinge zu schreiben entweder die Elemente als Liste übergeben, oder verwenden Sie mehrere Schreibvorgänge.

+0

Vielen Dank. !! –

Verwandte Themen