CLP(R) es un lenguaje de programación declarativo . Significa programación lógica de restricciones (real), donde real se refiere a los números reales . Se puede considerar y generalmente se implementa como un superconjunto o paquete adicional 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 mediante definiciones recursivas. Por ejemplo, una relación hipotecaria puede definirse como la que relaciona el capital P, el número de períodos de tiempo del préstamo T, el pago 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 capital original. La segunda regla expresa que, para un préstamo de al menos un período de tiempo, podemos calcular el nuevo monto adeudado P1 multiplicando el capital por 1 más la tasa de interés y restando el pago. El resto del préstamo se considera como otra hipoteca por el nuevo capital y un período de tiempo menos.
¿Qué se puede hacer con él? Se pueden plantear muchas preguntas. Si pido prestados 1000$ a 10 años al 10% anual y devuelvo 150$ al año, ¿cuánto deberé al final?
? -mg ( 1000 , 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% pagando $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 pago 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 .
Esto muestra la relación entre las variables, sin requerir que ninguna tome un valor particular.
Integración de Prolog
CLP(R) se integró por primera vez en un sistema Prolog en 1994, concretamente en SICStus Prolog . [1] Desde entonces, esta implementación se ha trasladado a muchos sistemas Prolog populares, incluidos Ciao , [2] SWI-Prolog [3] y XSB . [4]
Véase también
Referencias
- ^ Holzbaur, Christian (1995). "OEFAI clp(q,r) Manual Revisión 1.3.2". Informes técnicos en línea de la ÖFAI (95–09).
- ^ "Introducción: el sistema Ciao v1.22". ciao-lang.org . Consultado el 6 de noviembre de 2023 .
- ^ "Manual de SWI-Prolog". www.swi-prolog.org . Consultado el 6 de noviembre de 2023 .
- ^ Swift, Theresa (13 de mayo de 2022). "Paquetes de restricciones". El sistema XSB, versión 5.0, volumen 2: Interfaces y paquetes . pág. 71.
- Joxan Jaffar, Spiro Michaylov, Peter J. Stuckey, Roland HC Yap: El lenguaje y sistema CLP(R). ACM Transactions on Programming Languages and Systems 14(3): 339-395 (1992)
Enlaces externos
- Cómo utilizar CLP(R) Archivado el 14 de septiembre de 2008 en Wayback Machine.
- Manual de programación CLP(R) Archivado el 3 de noviembre de 2005 en Wayback Machine