Mostan�ig Prologgal k�zd�ttem, most pedig nekil�ttam az SML-nek.
Egyel�re nem sok sikerrel. Azt hiszem, ott rontom el, hogy nem tudok
elszakadni a prologos megk�zel�t�st�l. Prologban a lepeget(...)
elj�r�s meg�r�sakor a member(...) elj�r�st felhaszn�lhattam arra,
hogy egy t�nylegesen l�peget� algoritmussal az �sszes lehets�ges pontba
ell�pjek. Ennek a megold�snak mind k�l�n �gai voltak. SML-ben ugyan
alkalmazhatok egy f�ggv�nyt egy lista minden elem�re (pl. map-et),
de annak az eredm�nyei egy list�ban j�nnek l�tre, nem pedig mint �n�ll�
el�gaz�sok.
25.1. V�lasz.
Oktat�: Aj�nlom figyelm�be a Prolog-jegyzet 4.5. alfejezet�t
(Megold�sok gy�jt�se �s felsorol�sa). Ott l�that egy sem�t
arra, hogyan lehet felsorol� elj�r�st gy�jt�ve �talak�tani a Prologban.
Persze ehhez t�nyleg �t kell alak�tania a programja szerkezet�t, teh�t
nem haszn�lhatja a member-t �s m�s be�p�tett elj�r�sokat a
felsorol�sra. Ezek helyett egy
kovetkezo(+V0, +Param, -E, -V)
elj�r�st kell �rnia, amelynek a bemen� param�terei a k�vekez�k:
V0 a keres�s �llapot�t le�r� Prolog kifejez�s,
Param valamilyen, a keres�s sor�n nem v�ltoz� param�ter;
a kimen�k pedig:
E a k�vetkez� megold�s,
V a keres�s �j �llapota.
Ha egy ilyen seg�delj�r�sra �p�tve oldja meg a feladatot Prologban, akkor
ezt a megold�st k�nnyen �t tudja �ltetni SML-be is.
25.2. K�rd�s.
Meg tudna mondani valaki, hogy az SML-ben hogyan lehet lek�rdezni egy
�rt�kr�l, hogy v�ltoz�-e? A prologos var(X) megfelel�j�re
gondolok.
25.2. V�lasz.
Oktat�: Az SML-ben a v�ltoz�nak mindig van �rt�ke, teh�t a Prolog
var(X) vizsg�lat megfelel�je mindig meghi�sulna, ha lenne: ez�rt
nincs is ilyen vizsg�lat).
A hagyom�nyos funkcion�lis nyelvek, mint pl. az SML, nem
ismerik a logikai v�ltoz� fogalm�t, de az �jabb funkcion�lis
nyelvekben (pl. Oz, Alice) megjelenik ez a nyelvi elem
is.