[ Ekskalibur @ 30.11.2006. 17:19 ] @
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!
[ moore @ 30.11.2006. 19:10 ] @
http://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial-16.html

R.
[ qdot @ 30.11.2006. 20:52 ] @
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.
[ Ekskalibur @ 08.12.2006. 15:07 ] @
Ukapirao. Hvala!!!