Citat:
Ekskalibur: Da li neko moze da mi objasni setf u LISP-u na konkretnim primerima?
setf lista '(0 1 0 1 0 2 0 2 0 2 0 1 0 1 0 2 0 2 0 2 0 1 0 1 0))
(setf (nth potez lista) igrac)(setq prazna (obrisi potez prazna)))))).
Koja je razlika izmedju setf i setq?
Unapred HVALA!
setf je makro za dodeljivanje vrednosti varijabli.U konkretnom primeru,varijabli lista dodeljujesh vrednost(listu) iza quote('),tako da posle toga mozesh da kucash u interpreteru
>> lista
-> (0 1 0 1 0 2 0 2 0 2 0 1 0 1 0 2 0 2 0 2 0 1 0 1 0)
setf takodje prepoznaje i liste kao i p-liste,pa u ovoj liniji
(setf (nth potez lista) igrac)
se elemntu u listi lista na poziciji potez dodeljuje vrednost koja je vezana za igrac[.(potez se verovatno evaluira na celobrojnu pozitivnu vrednost).
(setq prazna (obrisi potez prazna))
Isto,varijabli prazna se dodeljuje vrednost koju vraca f-ja obrisi.
Razlika izmedju setf i setq je nebitna.setq je tu iz istorijskih razloga,a u principu rade isto.setq se josh uvek moze videti u makroekspanziji kod nekih implementacija lisp-a.
P.S. ovo i nije bash u skladu sa lisp terminologijom,ali ajde... ;)
Mladen.