Tôi biết trong Prolog bạn có thể làm một cái gì đó giống nhưngôn ngữ lập trình không xác định
someFunction(List) :-
someOtherFunction(X, List)
doSomethingWith(X)
% and so on
này sẽ không lặp qua tất cả các phần tử trong Danh mục; thay vào đó, nó sẽ phân nhánh thành các "máy" khác nhau (bằng cách sử dụng nhiều chủ đề, backtracking trên một chủ đề duy nhất, tạo ra các vũ trụ song song hoặc cho bạn), với một thực thi riêng biệt cho mọi giá trị có thể có của X gây ra someOtherFunction(X, List)
. !
(Tôi không có ý tưởng làm thế nào nó thực hiện điều này, nhưng đó không phải là quan trọng đối với câu hỏi)
Câu hỏi của tôi là: gì ngôn ngữ lập trình phi determistic khác được ra khỏi đó? Dường như khái niệm không xác định là cách đơn giản và hợp lý nhất để thực hiện đa luồng trong một ngôn ngữ với các biến không thay đổi, nhưng tôi chưa từng thấy điều này trước đây - Tại sao kỹ thuật này không phổ biến hơn?
Và có, điều này rất giống với câu hỏi cuối cùng của tôi: http://stackoverflow.com/questions/2174535/multithreading-in-functional-languages-prolog Tôi hỏi một câu hỏi mới bởi vì dường như tôi đã đọc từ cuối cùng kém; mọi người bắt đầu tranh luận về các chi tiết cụ thể của Prolog, nhưng tôi không thực sự về Prolog. –
Google, chủ yếu là trợ giúp. Ví dụ: http://en.wikipedia.org/wiki/Nondeterministic_programming là những gì tôi tìm thấy. cái đó có giúp ích không? – dirkgently
Điều đó đưa ra một vài (3) ví dụ, nhưng không thực sự giải thích tại sao không xác định không được sử dụng, ví dụ, hầu hết các ngôn ngữ chức năng –