这是一个简单的 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).