根据我的理解,声明式范式表明什么对解决方案很重要,而不是如何达到解决方案,但是习惯于程序化思考,我经常混淆......
所以解决方案是这个:
mymember(X, [X|_]).
mymember(X,[_|T]) :- mymember(X,T).
这是我对这个简单程序的声明式解释:
1) X 属于该列表,如果 X 是该列表的头为 TRUE(如果列表的头元素与我知道是否在列表中的 X 元素统一)
2)如果第一个事实不正确(X 不与第一个列表元素统一),则程序尝试执行第二个规则(也许在这里我有一些解释问题)。这条规则说:如果规则的主体为真,则头部为真)
规则的负责人说:X属于列表的TAIL(我使用匿名变量使用_字符表示不关心列表的第一个元素)
所以这条规则说:如果 X 元素属于列表的尾部为 TRUE,则 X 元素属于没有头部的列表为 TRUE
这是对该程序的正确声明和逻辑解释还是我遗漏了什么?