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 (vitalap) 2012. október 21., 20: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)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

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.