CLP(R)
CLP(R) — декларативный язык программирования . Это означает программирование логики ограничений (действительное), где вещественное относится к действительным числам . Его можно рассматривать и обычно реализовывать как надмножество или дополнительный пакет для реализации Пролога .
Пример правила
[ редактировать ]Одновременные линейные уравнения :
выражаются в CLP(R) как:
3*X + 4*Y - 2*Z = 8,
X - 5*Y + Z = 10,
2*X + 3*Y -Z = 20.
и типичный ответ реализации будет таким:
З = 35,75
Y = 8,25
Х = 15,5
Да
Пример программы
[ редактировать ]CLP(R) позволяет определять предикаты, используя рекурсивные определения. Например, ипотечные отношения можно определить как относительно основной суммы P, количества периодов времени кредита T, погашения каждого периода R, процентной ставки за период I и окончательный остаток задолженности в конце срока действия кредита B.
mg(P, T, R, I, B) :- T = 0, B = R.
mg(P, T, R, I, B) :- T >= 1, P1 = P*(1+I) - R, mg(P1, T - 1, R, I, B).
Первое правило гласит, что для кредита с нулевым периодом остаток задолженности в конце представляет собой просто первоначальную основную сумму долга. Второе правило гласит, что для кредита, рассчитанного хотя бы на один период времени, мы можем рассчитать новую сумму задолженности P1 по формуле умножив основную сумму на 1 плюс процентную ставку и вычитая сумму погашения. Оставшаяся часть кредита рассматривается как еще одна ипотека для новой основной суммы долга и на один период времени меньше.
Что с этим можно сделать? Вы можете задать много вопросов. Если я одолжу 1000 долларов на 10 лет под 10% годовых и погашу 150 долларов в год, сколько я буду должен в конце?
?- mg(1000, 10, 150, 10/100, B).
Система отвечает ответом
B = 203.129.
Какую сумму я могу занять с помощью 10-летнего кредита под 10%, погашая 150 каждый год, чтобы в конце концов ничего не быть должен?
?- mg(P, 10, 150, 10/100, 0).
Система отвечает ответом
P = 921.685.
Какова связь между основной суммой, погашением и остатком по 10-летнему кредиту под 10% годовых?
?- mg(P, 10, R, 10/100, B).
Система отвечает ответом
P = 0.3855*B + 6.1446 * R.
Это показывает взаимосвязь между переменными, не требуя, чтобы какая-либо из них принимала определенное значение.
Интеграция Пролога
[ редактировать ]CLP(R) впервые был интегрирован в систему Prolog в 1994 году, а именно в SICStus Prolog . [1] Эта реализация с тех пор была портирована на многие популярные системы Пролога, включая Ciao , [2] SWI-Пролог [3] и XSB . [4]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Хольцбаур, Кристиан (1995). «Руководство OEFAI clp(q,r), версия 1.3.2», . ÖFAI Технические отчеты в Интернете (95–09).
- ^ «Введение — Система Ciao v1.22» . ciao-lang.org . Проверено 6 ноября 2023 г.
- ^ «Руководство по SWI-Прологу» . www.swi-prolog.org . Проверено 6 ноября 2023 г.
- ^ Свифт, Тереза (13 мая 2022 г.). «Пакеты ограничений». Система XSB, версия 5.0, том 2: Интерфейсы и пакеты . п. 71.
- Джоксан Джаффар, Спиро Михайлов, Питер Дж. Стаки, Роланд Х.К. Яп: Язык и система CLP(R) . Транзакции ACM на языках и системах программирования 14 (3): 339-395 (1992).
Внешние ссылки
[ редактировать ]- Как CLP(R). Архивировано 14 сентября 2008 г. в Wayback Machine.
- Руководство по программированию CLP (R), заархивировано 3 ноября 2005 г. в Wayback Machine.