Будучи новым для Prolog, я наткнулся на очень интересное обсуждение
Вычисление, которое выполняется не более одного раза. Вычисление, которое после успеха не оставляет открытых точек выбора.Ясно, что второе подразумевает первое, но не наоборот.
Читая поток, я понял, что первый из них был Dr.Neumerkel, второе - Drs.Wielemaker, O'Keefe и другие.
Dr.Neumerkel говорит (ссылаясь на предикат под названием call_semidet
там):
Реализация может быть улучшена, но до оптимизации и необходимо определить фактическое значение.
Итак, имеет ли смысл значение?
Как насчет 'det'?
Вычисление, которое выполняется ровно один раз. Вычисление, которое преуспевает ровно один раз и которое после успеха оставляет нет точек выбора.Интересно, еще нет консенсуса сообщества? Почему бы не назвать эти две разные концепции по-разному?
Здесь выдержка из страницы SWI-Prolog выше:
Сокращение для детерминированного.
Предикат является детерминированным, если ему удается ровно один раз не оставляя точки выбора.
Сокращение для полудетерминированных.