当我的朋友在学校开始学习 Prolog 时,我取笑他学习了一种无用的语言。然而,他向我展示了一些我什至不知道可能的东西;我想知道这种技术是从哪里来的。
技术是这样的:
permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on
在这段代码中,isAMember(X, List)
是一个函数,如果X
是 in则返回 true List
。然而,到目前为止X
还没有被定义为一个变量——所以程序将产生一堆新线程,每个可能的值都为X
真isAMember(X, List)
,然后从那里继续。
这使我们能够以我能想象到的最简单、最优雅的方式创建多线程算法。
所以我的问题是: 这是 Prolog 特有的,还是所有逻辑和/或功能语言的特性? 另外,我在哪里可以学习更多像这样令人惊叹的多线程技术——这肯定是编程的未来。