CLP (R) es un lenguaje de programación declarativo . Significa programación lógica de restricción (Real) donde real se refiere a los números reales . Se puede considerar y generalmente se implementa como un superconjunto o paquete complementario para una implementación de Prolog .
Regla de ejemplo
Las ecuaciones lineales simultáneas :
se expresan en CLP (R) como:
3 * X + 4 * Y - 2 * Z = 8 , X - 5 * Y + Z = 10 , 2 * X + 3 * Y - Z = 20.
y la respuesta de una implementación típica sería:
Z = 35,75
Y = 8,25
X = 15,5
Sí
Programa de ejemplo
CLP (R) permite la definición de predicados utilizando definiciones recursivas. Por ejemplo, una relación hipotecaria se puede definir como la relación del principal P, el número de períodos de tiempo del préstamo T, el reembolso de cada período R, la tasa de interés por período I y el saldo final adeudado al final del préstamo 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 ).
La primera regla expresa que para un préstamo de período 0, el saldo adeudado al final es simplemente el principal original. La segunda regla expresa que para un préstamo de al menos un período de tiempo podemos calcular la nueva cantidad adeuda P1 multiplicando el principal por 1 más la tasa de interés y restando el reembolso. El resto del préstamo se trata como otra hipoteca por el nuevo principal y un período de tiempo menos.
¿Qué puedes hacer con eso? Puedes hacer muchas preguntas. Si pido prestados 1000 $ durante 10 años al 10% anual y pague 150 por año, ¿cuánto deberé al final?
? - mg ( 1,000 , 10 , 150 , 10 / 100 , B ).
El sistema responde con la respuesta
B = 203,129 .
¿Cuánto puedo pedir prestado con un préstamo a 10 años al 10% y pagar 150 cada año para no deber nada al final?
? - mg ( P , 10 , 150 , 10 / 100 , 0 ).
El sistema responde con la respuesta
P = 921,685 .
¿Cuál es la relación entre el capital, el reembolso y el saldo de un préstamo a 10 años al 10% de interés?
? - mg ( P , 10 , R , 10 / 100 , B ).
El sistema responde con la respuesta
P = 0,3855 * B + 6,1446 * R .
Muestra la relación entre las variables, sin necesidad de que ninguna tome un valor en particular.
Referencias
- Joxan Jaffar, Spiro Michaylov, Peter J. Stuckey, Roland HC Yap: El lenguaje y sistema CLP (R) . Transacciones ACM sobre lenguajes y sistemas de programación 14 (3): 339-395 (1992)