LocalazyLocalazy

Constraint Handling Rules

Constraint Handling Rules (CHR) je čisto logický programovací jazyk s obmedzeniami, ktorý vyvinul Thom Frühwirth na Univerzite Koblenz-Landau v Nemecku. Je založený na myšlienke constraint logic programming, ktorá rozširuje logické programovanie o riešenie obmedzení. V CHR sú obmedzenia občanmi prvej triedy a možno s nimi manipulovať ako s inými dátovými štruktúrami. Hlavným rozdielom medzi CHR a inými jazykmi na programovanie s obmedzeniami je, že CHR nemá špecializovaný riešiteľ obmedzení. Namiesto toho má programátor plnú kontrolu nad procesom riešenia obmedzení. To umožňuje oveľa deklaratívnejší štýl programovania, pri ktorom sa programátor môže sústrediť na to, čo by mal program robiť, a nie na to, ako to urobiť. Jazyk CHR bol navrhnutý s ohľadom na efektívnosť. Je založený na malej množine primitívnych operácií, ktoré možno kombinovať a vytvárať tak zložitejšie operácie. Jazyk je tiež staticky typovaný, čo umožňuje efektívnejšie vykonávanie. CHR je výkonný nástroj na riešenie zložitých problémov. Obzvlášť dobre sa hodí na riešenie problémov, ktoré zahŕňajú veľa manipulácie s údajmi, ako je napríklad dolovanie údajov a strojové učenie.