Prolog returns 变量名而不是值
Prolog returns variable name instead of value
我有一种方法可以在建造塔时检查下一块砖的放置位置。
freePosition(POS, LEVEL) :- levelWithSpace(LEVEL),
freePositionOnLevel(POS, LEVEL).
此方法检查 space 的级别并询问该级别的空闲位置。
在我的例子中,它应该 return 两个结果:
- 位置=1,级别=2
- 位置=2,级别=2
但是它 return 的输出如下:
?- freePosition(POS, LEVEL).
POS = 1,
LEVEL = 2 ;
POS = LEVEL, LEVEL = 2 ;
如何更改 returns POS=2 而不是 POS=LEVEL 的行为?
您可以使用内置函数 format/2
发出格式化字符串:
?- freePosition(POS, LEVEL),
format('Pos = ~d, Level = ~d~n', [POS,LEVEL]).
无论您使用何种 Prolog 实现,这都可以轻松获得统一的输出样式。
请注意,Prolog 解释器顶层给出的具体答案风格在不同的 Prolog 实现之间有很大差异。
我有一种方法可以在建造塔时检查下一块砖的放置位置。
freePosition(POS, LEVEL) :- levelWithSpace(LEVEL),
freePositionOnLevel(POS, LEVEL).
此方法检查 space 的级别并询问该级别的空闲位置。 在我的例子中,它应该 return 两个结果:
- 位置=1,级别=2
- 位置=2,级别=2
但是它 return 的输出如下:
?- freePosition(POS, LEVEL).
POS = 1,
LEVEL = 2 ;
POS = LEVEL, LEVEL = 2 ;
如何更改 returns POS=2 而不是 POS=LEVEL 的行为?
您可以使用内置函数 format/2
发出格式化字符串:
?- freePosition(POS, LEVEL),
format('Pos = ~d, Level = ~d~n', [POS,LEVEL]).
无论您使用何种 Prolog 实现,这都可以轻松获得统一的输出样式。
请注意,Prolog 解释器顶层给出的具体答案风格在不同的 Prolog 实现之间有很大差异。