CLP(R)
CLP(R)CLP(R)는 선언형 프로그래밍 언어입니다.이는 구속 로직 프로그래밍(Real)의 약자로, 여기서 real은 실수를 나타냅니다.이 패키지는 일반적으로 Prolog 구현을 위한 슈퍼셋 또는 애드온 패키지로 구현될 수 있습니다.
규칙 예시
연립 선형 방정식:
CLP(R)에서는 다음과 같이 표시됩니다.
3*X + 4*Y - 2*Z = 8, X - 5*Y + Z = 10, 2*X + 3*Y -Z = 20.
일반적인 구현의 반응은 다음과 같습니다.
Z = 35.75
Y = 8.25
X = 15.5
Yes
프로그램 예시
CLP(R)를 사용하면 재귀 정의를 사용하여 술어를 정의할 수 있습니다.예를 들어 담보대출 관계는 원금 P, 대출 기간 T, 각 기간 R 상환, 기간 I 및 대출 B의 말기에 대한 최종 잔액과 관련된 것으로 정의할 수 있다.
관리(P, T, R, I, B) :- T = 0, B = R. 관리(P, T, R, I, B) :- T >= 1, P1 = P*(1+I) - R, 관리(P1, T - 1, R, I, B).
첫 번째 규칙은 0기간 대출의 경우, 마지막에 지불해야 하는 잔액은 단순히 원래 원금이라고 표현한다.두 번째 규칙은 최소 한 기간의 대출에 대해 원금에 이자율을 곱하고 상환을 차감함으로써 새로운 부채 금액 P1을 계산할 수 있다는 것을 나타낸다.대출의 나머지 부분은 새로운 원금에 대한 또 다른 담보대출로 처리되며 기간은 한 번 줄어든다.
그걸로 뭘 할 수 있죠?당신은 많은 질문을 할 수 있다.1000달러를 연 10%로 10년간 빌려서 연간 150달러를 상환하면 최종적으로 얼마가 됩니까?
?- 관리(1000, 10, 150, 10/100, B).
시스템이 응답합니다.
B = 203.129.
10년 대출의 10%를 빌려서 매년 150을 갚으면 마지막에 빚을 지지 않을 수 있는 금액은 얼마입니까?
?- 관리(P, 10, 150, 10/100, 0).
시스템이 응답합니다.
P = 921.685.
10년 만기 대출의 원리금, 상환 및 잔액은 어떤 관계가 있습니까?
?- 관리(P, 10, R, 10/100, B).
시스템이 응답합니다.
P = 0.3855*B + 6.1446 * R.
특정 값을 취할 필요 없이 변수 간의 관계를 보여줍니다.
레퍼런스
- Joxan Jaffar, Spiro Michaylov, Peter J. Stuckey, Roland H. C. Yap: CLP(R) 언어와 시스템.프로그래밍 언어와 시스템에 관한 ACM 트랜잭션 14(3): 339-395(1992)
외부 링크