egi*_*egi 5 prolog logic-programming
是否有任何prolog实现能够枚举可数无限结果的所有元素?
让我们考虑列举所有自然数对.如果我们按{(0,0),(0,1),(1,0),(0,2),(1,1),(2,0),...}的顺序枚举对,我们可以枚举所有对.但是,如果我们按照{(0,0),(0,1),(0,2),(0,3)...}的顺序枚举对作为以下GNU prolog程序,我们永远不会达到诸如( 1,1).
% cat nats.pl
nat(0).
nat(X1) :- nat(X), X1 is X + 1.
pair_of_nats(X, Y) :- nat(X), nat(Y).
% prolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- ['nats.pl'].
compiling /home/egi/prolog/nats.pl for byte code...
/home/egi/prolog/nats.pl compiled, 4 lines read - 762 bytes written, 9 ms
yes
| ?- pair_of_nats(X,Y).
X = 0
Y = 0 ? ;
X = 0
Y = 1 ? ;
X = 0
Y = 2 ? ;
X = 0
Y = 3 ?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
428 次 |
最近记录: |