"Nyeste Szabolcs" <infolist(a)citromail.hu> writes:
Sziasztok!
Amikor beadtam a házit, az ETS nem fogadta el a kódban az operátoros
jelölést,(K = ~K1 -re hibát dobott) viszont amikor kijavítottam,
lefordította, és a sat/1 argumentumán belül már elfogadta.
Otthon megnéztem, a SICStus fcompile sem fogadta el,
azonban kijavítva a
sat/1 - ben sem fogadta el. A kódban szerepel a :- op(100,fx,~). sor,
többször is ellenõriztem. Mi lehet a megoldás?
Sokat segitene, ha pontosan idezned azokat a kodreszleteeket, amiket
elfogad es amiket nem. Es a pontos hibajelzest, amikor "nem fogadja
el". Enelkul csak hasalni tudok.
Egy lehetseges ok, hogy nem mindegy, hogy K=~K1-et vagy K= ~K1-et irsz. Az
elobbi ugyanis csak 3 tokenbol all, hiszen az = es ~ egyarant tapado jelek,
igy egymas melle irva egyetlen atomot kepeznek! Mivel az =~ nem operator,
az elso esetben szintaxishibat kell kapnod.
Kezdetben arra gyanakodtam, hogy mivel modult
használok, exportálni
kellene az operátort, aztán kiderült, hogy nem ez a hiba, azért ez egy
érdekes kérdés (hogy tudok operátort exportálni, lehet-e, mi a hatása), a
jegyzetben nem találtam erre vonatkozóan semmit.
Az operatorok nem kotodnek modulokhoz, "globalis eroforraskent" jelennek
meg. Tehat ha barmelyik modul deklaral egy operatort, az attol kezdve
mindenki szamara ervenyes. Persze tudni kell, hogy az operatorok csak a
beolvasas es kiiras soran erdekesek, futaskor nem.
-Peter
MINDENKINEK, MINDENKINEK, MINDENKINEK, MINDENKINEK, MINDENKINEK
Ha barmi gondotok van a SICStus-szal (vagy barmilyen mas rendszerrel),
akkor azt javasolom, hogy egy teljes szkriptet kuldjetek, amiben latszik, a
rendszer inditasatol kezdve a teljes parbeszed egeszen a problema
felmeruleseig. Ha file-ok is hivatkozva vannak, akkor azok tartalmat is
mellekeljetek. Igy a level fogadoja pontosan meg tudja ismetelni azokat a
lepeseket, amik a problemahoz vezettek. A szkrip elkeszitese nektek egy kis
tobbletmunka, de sokszorosan megeri! Koszonom!