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.
Schreiben hat nur eine Priorität von 1. Sie müssen es 'write ([TempIndex, Element])' nennen, damit es funktioniert. – Enigmativity
oder 'write (TempIndex = Element)' – CapelliC
In jedem Fall: ernsthaft in Erwägung ziehen, stattdessen 'writeq' zu verwenden! – false