CLP(R)
CLP(R) är ett deklarativt programmeringsspråk . Det står för constraint logic programmering (Real) där reellt refererar till de reella talen . Det kan övervägas och implementeras i allmänhet som ett superset eller tilläggspaket för en Prolog -implementering.
Exempelregel
De samtidiga linjära ekvationerna :
uttrycks i CLP(R) som:
3 * X + 4 * Y - 2 * Z = 8 , X - 5 * Y + Z = 10 , 2 * X + 3 * Y - Z = 20.
och ett typiskt genomförandes svar skulle vara:
Z = 35,75 Y = 8,25 X = 15,5 Ja
Exempel på program
CLP(R) tillåter definition av predikat med hjälp av rekursiva definitioner. Till exempel kan en bolånerelation definieras som att relatera kapitalet P, antalet tidsperioder för lånet T, återbetalningen varje period R, räntan per period I och det slutliga beloppet vid slutet av lånet B.
0
mg ( P , T , R , I , B ) : T = , B = R. _ mg ( P , T , R , I , B ) : - T >= 1 , Pi = P * ( 1 + I ) - R , mg ( P1 , T - 1 , R , I , B ).
Den första regeln uttrycker att för ett lån på nollperioder är det utestående beloppet i slutet helt enkelt den ursprungliga kapitalbeloppet. Den andra regeln uttrycker att vi för ett lån på minst en tidsperiod kan beräkna det nya skuldbeloppet P1 genom att multiplicera kapitalbeloppet med 1 plus räntan och subtrahera återbetalningen. Resten av lånet behandlas som ytterligare ett inteckningslån för den nya huvudmannen och en tidsperiod mindre.
Vad kan du göra med det? Du kan ställa många frågor. Om jag lånar 1000$ i 10 år till 10% per år och återbetalar 150$ per år, hur mycket kommer jag att vara skyldig i slutet?
a - mg ( 1000 , 10 , 150 , 10/100 , B ) .
Systemet svarar med svaret
B = 203,129 .
Hur mycket kan jag låna med ett 10-årigt lån till 10 % och återbetala 150 varje år för att inte vara skyldig ingenting i slutet?
a - mg ( P , 10 , 150 , 10/100 , ) . 0
Systemet svarar med svaret
P = 921,685 .
Vad är förhållandet mellan kapital, återbetalning och saldo på ett 10-årigt lån till 10% ränta?
a - mg ( P , 10 , R , 10/100 , B ) .
Systemet svarar med svaret
P = 0,3855 * B + 6,1446 * R .
Detta visar förhållandet mellan variablerna, utan att kräva att någon tar ett visst värde.
- Joxan Jaffar, Spiro Michaylov, Peter J. Stuckey, Roland HC Yap: CLP(R)-språket och systemet . ACM Transactions on Programming Languages and Systems 14(3): 339-395 (1992)
externa länkar