【发布时间】:2010-02-01 03:40:30
【问题描述】:
当我的朋友在学校开始学习 Prolog 时,我取笑他学习了一种无用的语言。然而,他向我展示了一些我什至不知道可能的东西;我想知道这种技术是从哪里来的。
技术是这样的:
permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on
在此代码中,isAMember(X, List) 是一个函数,如果 X 在 List 中,则返回 true。但是,到目前为止,X 还没有定义为变量 - 因此程序将生成一堆新线程,每个可能的 X 值都有一个,这使得 isAMember(X, List) 为 true,并从那里继续。
这使我们能够以我能想象到的最简单、最优雅的方式创建多线程算法。
所以我的问题是:这是 Prolog 特有的,还是所有逻辑和/或函数语言的特性?另外,我在哪里可以学习更多像这样令人惊叹的多线程技术 - 这是肯定是编程的未来。
【问题讨论】:
-
我会说编程是这样开始的!非确定性图灵机有这个概念。
-
Prolog 不是功能语言。它专门解决逻辑问题。
标签: multithreading functional-programming prolog logic-programming