逻辑编程的魅力
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次。 就这个简单的例子而言,和函数式比起来,似乎差不多,但逻辑编程用得好,更符合人的自然思维方式。