A vágó használata: elkötelezés adott klóz mellett, a vágás alapszabálya

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 21., 21:09-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm13}} * fejezetek: 4.1.3 P3 példa * fóliák: II.18-21 A klóz mellett való elkötelezés általában egyszerű feltételes szerke…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


  • fejezetek: 4.1.3 P3 példa
  • fóliák: II.18-21

A klóz mellett való elkötelezés általában egyszerű feltételes szerkezetet jelent. szülő :- ha, akkor. szülő :- \+ ha, egyébként Ez az alak logikailag tiszta, de nem hatékony. Ha ha egyszerű, nincs benne választás, a következő alakkal ekvivalens: szülő :- ha, ! akkor. szülő :- egyébként A vágás alapszabálya: a kimenő paraméterek értékadása elé kell a vágót tenni. Így

  • csak akkor helyettesíti be a kimenő paramétert, ha tudja, hogy mi az értéke
  • hatékonyabb és általánosabb a program:
% a vágó előtt adunk értéket:
max(X, Y, X) :- X >= Y, !.
max(X, Y, Y) :- X < Y.

Ezzel akkor van baj, ha ellenőrzésre használjuk:

max(2, 1, 1) 
yes

Ha a vágó után adunk értéket a kimenő paraméternek:

max(X, Y, M) :- X >= Y, !, M = X.
max(X, Y, Y).

Akkor mindkét irányban jól működik.