我正在 SWI-Prolog 中运行教科书 CHR 程序。
:- use_module(library(chr)).
:- chr_constraint fib/2.
f0 @ fib(0,M) ==> M=1.
f1 @ fib(1,M) ==> M=1.
fn @ fib(N,M) ==> N>=2 | N1 is N-1, fib(N1,M1), N2 is N-2, fib(N2,M2), M is M1+M2.
一切正常,但我不明白为什么输出这么长
?- fib(3,A).
A = 3,
fib(1, 1),
fib(0, 1),
fib(1, 1),
fib(2, 2),
fib(3, 3).
谁不仅A = 3?我可以禁用其余的吗?对于更大的价值来说,这是一个真正的不便......