【发布时间】:2013-03-18 15:57:05
【问题描述】:
根据我的理解,声明式范式指出了解决方案的重要性,而不是解决方案的方式,但是,习惯于按程序思考,我经常混淆......
所以解决方案是这样的:
mymember(X, [X|_]).
mymember(X,[_|T]) :- mymember(X,T).
这是我对这个简单程序的声明性解释:
1) X 属于该列表,如果 X 是该列表的头部为 TRUE(如果列表的头部元素统一与该列表的 X 元素我会知道是否在列表中)
2) 如果第一个事实不成立(X 不与第一个列表元素统一),程序会尝试执行第二个规则(也许在这里我有一些解释问题)。这条规则说:如果规则的主体为真,则头部为真)
规则的负责人说:X属于列表的TAIL(我使用匿名变量使用_字符表示不关心列表的第一个元素)
所以这条规则说:如果 X 元素属于列表的尾部为 TRUE,则 X 元素属于没有头部的列表为 TRUE
这是对该程序的正确声明和逻辑解释还是我遗漏了什么?
【问题讨论】:
标签: list prolog declarative