Я знаю, в Прологе вы можете сделать что-то вроде
someFunction(List) :-
someOtherFunction(X, List)
doSomethingWith(X)
% and so on
Это не будет повторять каждый элемент в списке; вместо этого он будет разветвляться на разные "машины" (с помощью нескольких потоков, обратного отслеживания в одном потоке, создания параллельных юниверсов или чего-либо еще) с отдельным выполнением для каждого возможного значения X, которое вызывает someOtherFunction(X, List)
вернуть истину!
(Понятия не имею, как это происходит, но это не важно для вопроса)
Мой вопрос: какие еще существуют недетерминированные языки программирования? Кажется, что недетерминизм - это самый простой и логичный способ реализации многопоточности в языке с неизменяемыми переменными, но я никогда раньше не видел, чтобы это было сделано. Почему этот метод не более популярен?