逻辑编程的魅力

2011-04-24 13:57:23
给没有接触过逻辑编程的人稍微展示一下逻辑编程元编程,和逻辑编程的魅力。

这里有一个语句,用do开头,表示这句代码是一个祈使句(命令句),完成一个动作。

do write-X:-write(X),nl.

上面的X可以看做调用参数,功能是打印出X,并换行,nl 是换行的意思。

?- do write-hello.
hello

运行结果是打印了一个hello出来。

现在我们要写一个通用的调用,含义是重复做很多次同样的事情,调用的形式是:

do N-times-Sth

参数解释:其中的N是次数,而Sth,是要做的事情。

让我们来逻辑的想一下,do N-times-Sth是什么意思呢?

do 1-times-Sth:- do Sth.
do N-times-Sth :- not(N = 1), N1 is (N-1), do Sth, do N1-times-Sth.

上面这句代码已经很清楚的说明了其含义,就是:
如果N等于1,那么含义是,做一次Sth。
如果N不等于1,那么含义是,做一次Sth,然后做N-1次Sth。


于是,我们可以进行这样的调用:

?- do 3-times-write-hello.
hello
hello
hello

hello被重复输出了3次。


就这个简单的例子而言,和函数式比起来,似乎差不多,但逻辑编程用得好,更符合人的自然思维方式。
::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

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


订阅 substack 体验古早写作:


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

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


自怼圈/年度番新

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