【发布时间】:2017-06-23 19:51:13
【问题描述】:
vecLine2BitLineAux([C | Cs],[P | Ps], N, LastP, LastC, BitLine) :-
/* print(P), print(' '), print(C), print(' '), print(N),
print(' '), print(LastP), print(' '), print(LastC),
print(' '), print(BitLine), print('\n'), */
vecLine2BitLineAux(Cs,Ps, N, P, C, Res),
SpCnt is P-(LastP+LastC),
/* print(SpCnt),print('\n'), */
fill_char(SpCnt, ' ', Spaces),
fill_char(LastC, '*', Stars),
append(Stars, Spaces, Tmp),
append(Tmp, Res, BitLine).
vecLine2BitLine(CList, [P | Ps], N, BitLine) :-
P1 is P-1,
vecLine2BitLineAux(Clist, [P | Ps], N, P1, 0, BitLine).
主谓词应该调用带有 2 个附加参数的 Aux 谓词,它们是 (P-1) 和 0,但它给出了错误的一些原因:
Exception: (11) _L191 is 9- (5+_G559) ?
但是,如果我只是在下一个示例中运行 Aux 谓词,效果会很好:
vecLine2BitLineAux([1,2,1],[2,5,9],12, 1,0,BitLine).
任何人都知道为什么以及如何解决它?
【问题讨论】:
-
is/2是表达式求值器,因此要求右侧表达式中的 所有 变量都绑定到数字。