Когда мой друг начал изучать Пролог в школе, я высмеял его за то, что он изучил бесполезный язык. Однако он показал мне кое-что, чего я даже не знал; Я хочу знать, откуда эта техника.Многопоточность в ... функциональных языках? (Prolog)
Методика такова:
permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on
В этом коде isAMember(X, List)
это функция, которая возвращает истину, если X
в List
. Однако до этого момента X
не определяется как переменная - , поэтому программа создаст пучок новых потоков, по одному для каждого возможного значения X
, что делает isAMember(X, List)
true, и продолжит оттуда.
Это позволяет нам создать многопоточный алгоритм простейшим, самым элегантным способом, который я мог себе представить.
Так что мой вопрос: Является ли это спецификацией Prolog или функцией всех логических и/или функциональных языков? Кроме того, где я могу узнать более удивительные методы многопоточности, подобные этому - это, безусловно, будущее программирования.
Я бы сказал, что программирование началось именно так! Эта концепция не имеет детерминированной машины Тьюринга. – 2010-02-01 03:51:19
Prolog не является функциональным lanauge. Он специализируется на решении логических задач. – Francis