Jaz tuki ne vidim nobene razlike, vsaj ce imas class takole definiran: class(X, positive) :- X>0. class(X, negative) :- X<0.
Potem gre pri splitu z rezom za 'zeleni rez' - ni deklarativne razlike, je samo postopkovna (torej samo optimizacija). Ce pozenem obe verziji in da uporabim zgornjo definicijo class, dobim vedno isti rezultat in ne tko kot si ti napisal. Razen ce imas class kako drugace definiran..? 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>: > Še bolj postopkovno razloženo :) > > če ni reza dobiš tole: > > | ?- split([1,2,-3],P,L) . > L = [-3], > P = [1,2] ? ; > > L = [2,-3], > P = [1] ? ; > > L = [1,-3], > P = [2] ? ; > > L = [1,2,-3], > P = [] ? > > če pa je pa samo pravilno: > | ?- > split([1,2,-3],P,L) > . > > L = [-3], > P = [1,2] ? ; > > 2008/6/21 Miha Cerar <[EMAIL PROTECTED]>: > > > verzija brez reza lahko pri vračanju kliče cilj class(X, > positive/negative) > > ne glede na to, kakšen je X > > > > 2008/6/21 Matjaz Horvat <[EMAIL PROTECTED]>: > > > > REZ > >> split([],[],[]). > >> split([X|R],[X|R1],N):-class(X,positive),!, split(R,R1,N). > >> split([X|R],P,[X|R1]):-class(X,negative), split(R,P,R1). > >> > >> BREZ > >> split([],[],[]). > >> split([X|R],[X|R1],N):-class(X,positive), split(R,R1,N). > >> split([X|R],P,[X|R1]):-class(X,negative), split(R,P,R1). > >> > >> Najdite in razložite problem pri verziji brez reza (verzija brez reza > >> lahko > >> pri vračanju > >> kliče cilj class(X, positive/negative) ne glede na to, kakšen je X). > >> > >> V čem je torej problem, če ni reza? > >> > >> lpM > >> > > > > >
