Поскольку Erlang основан на Prolog, означает ли это, что Erlang является языком ограничений языка?
ли Erlang Пролога строительные блоки: факты, правила и запросЯвляется ли Erlang языком ограничений-логики?
ответ
No.
Синтаксис Эрланга очень похож на Пролог, но семантика очень разные. Ранняя версия Erlang была написана с использованием Prolog, но сегодняшняя Erlang больше не может означать, что это «основано на Prolog».
В Erlang не включены обратные слежения или другие функции Prolog, регулярно используемые для логического программирования. Конечно, вы можете реализовать Prolog на других языках, и Erlang - это более простой выбор для этого, чем некоторые другие. Это можно увидеть в проекте Роберта Virding в «Erlog»:
Короче говоря, нет, это не :) Это не те строительные блоки. Основное внимание уделяется параллелизму, параллельному программированию, распределенным приложениям и отказоустойчивости (будучи функциональным, строгим, декларативным языком).
Вы можете также использовать функцию список понимание в Erlang как способ реализации в стиле ограничений программирования.
% Produce the tuple {1, 0}
%
constraint_test() -> [ {A, B} ||
A <- lists:seq(0, 1),
B <- lists:seq(0, 1),
A > B].
Вы альтернативно место генераторы элементов, взятых из списков (A < - списки: сл (0, 1)) и ограничения (A> B).
Я недавно решил проблему, связанную ниже. И если вы правильно разместите ограничения, у вас будет ответ в мгновение секунды.
http://www.geocaching.com/seek/cache_details.aspx?guid=a8605431-53b5-4c2c-97fb-d42ee299b167
Да.
Первая версия Erlang не была написана в Prolog, она была написана на одном из языков логики программирования с принудительным выбором. Эти языки понизили откат Prolog, и, следовательно, название «зафиксированный выбор» означало, что когда был выбран выбор, невозможно было отступить и попробовать другое. Это было сделано для того, чтобы упростить одновременное создание логического программирования. Другой способ взглянуть на это состоит в том, что параллельные процессы будут применять ограничения к переменным, но являющиеся логическими переменными и, следовательно, не подлежащие переуступке, это будут последовательные ограничения, а не изменения стоимости. Ограничение может назначать частичное значение переменной, содержащую другую переменную, которая будет назначена позже. Это базовая модель Erlang. Программирование логики ограничений обычно используется для версий, где ограничения могут также включать математические утверждения о возможных диапазонах переменных с предполагаемыми численными значениями.
Синтаксис Erlang показывает свое наследие логического программирования, но важно понять, что это взяло это на основе языков программирования логического выбора, которые взяли его из Prolog, а не непосредственно из Prolog. Хотя в 1980-х годах были разработаны несколько языков программирования логики выбора, они не смогли вырваться из тени Пролога и были сбиты их ассоциацией с неудачной инициативой японского пятого поколения, а также конкурирующими командами разработчиков, которые препирались незначительные различия, поэтому стандарт не был установлен.
Разработчики Erlang представили синтаксический сахар, который дал более функциональный внешний вид кодексу, и приняло маркетинговое решение, чтобы продвинуть его как функциональный, а не логический язык программирования, что позволило ему не затягиваться после пятого поколения увольнение логического программирования.
Спасибо, теперь я понимаю привязку и неизменность переменных в Эрланге намного лучше! Хорошо знать, откуда оно взялось. – Amiramix