これは、実際のコードで現在抱えている問題を示す簡単な Prolog プログラムです。
Prolog で Brainf*ck インタープリターを作成しようとしていますが、権利が返されません。Output
私は走っていますbf("+.", Output)
期待リターン -Output = [1]
実際の返品 - Output = []
.
Output
iterateProg(Prog,Output)
inに戻ると、その値が失われbf2
ます。
プログラムは次のとおりです。
bf2(Prog,Output):-
iterateProg(Prog,Output).
iterateProg([],_):- !.
iterateProg(Prog, Output):-
checkInstruction(Prog,Output, NewProg, NewOutput),
iterateProg(NewProg, NewOutput).
checkInstruction([Plus|ProgTail],Output,ProgTail,Output):-
char_code('+',Plus)
%increase memory by 1 for printing later.
.
checkInstruction([Period|ProgTail], Output, ProgTail, NewOutput):-
char_code('.',Period),
%take the value in memory from addition just now, we will assume it is 1
append(Output,[1],NewOutput).