合并句的分拆;并列句的合并

2011-04-17 01:10:43
上篇说到目前的工作还不适于引入这样的表达方式。

但现在改主意了,加入下面的代码,就可以实现合并句的分拆,看起来也够简单清晰,因此,这个工作可以加入to-do-list了。

separate(A,Ax):-A \= (_-_), is_list(A),member(Ax,A).
separate(A,Ax):-A \= (_-_), not(is_list(A)),A=Ax.
separate(A-B,Ax-Bx):-is_list(A),member(Ax,A),separate(B,Bx).
separate(A-B,Ax-Bx):-not(is_list(A)),Ax=A,separate(B,Bx).

%是变成[a1-b,a2-b]还是变成a1-b,a2-b?变成列表似乎更好处理些,后面再看。

%Term是合并句式     对有变量的列表处理有问题,继续做。
def combined-Term:-is_list(Term),!.
def combined-Term:-Term==(A-B), def combined-A, !.
def combined-Term:-Term==(A-B), def combined-B, !.
%这个是专门对合并句式起作用的规则
do Term:- def combined-Term, separate(Term,Term1), do Term1.


仅仅是加上这样一点通用的代码,在程序中就可以实现各种合并句的分拆功能,比如同时关闭w1,w2窗口,就可以这样写:

do close-[w1,w2].

前提仅仅是定义了这样的关闭单个窗口的代码:
do close-W :- ... ...

而且,对于几乎所有的谓词都可以直接如此使用,列表可以出现在任意的位置。

这样能够让代码变得更加简洁,易于理解。

这个工作还要持续几天,让它变成一个足够通用,足够灵活的基础代码,同时又不会和其他表达方式出现混淆的情况。

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

订阅 substack 体验古早写作:


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::