On 2/21/07, Volkan YAZICI <[EMAIL PROTECTED]> wrote:
Merhaba,

Bildiğim kadarı ile FLET lexical scope'ta geçerli oluyor. Şöyle ki:

(defun cons-test (p q)
  (cons p q))

(defun mapcar-test (proc lst)
  (if (null lst) '()
      (cons-test (funcall proc (first lst))
                 (mapcar-test proc (rest lst)))))

(flet ((cons-test (p q) (cons 1 (cons p q))))
  (mapcar-test #'(lambda (p) (* p 2)) '(1 2 3 4)))
=> '(2 4 6 8)

MAPCAR-TEST, FLET tarafından tanıtılan CONS-TEST'i dikkate almadı. Bu
sebeple özellikle fonksiyonların dynamic scope'ta değerini nasıl
gölgeleyebileceğimizi sormuştum.

Eger degistirmis olsaydi bile cons-test cons'u kullandigi icin sonsuz
donguye girmis olacaktik. cons kullanmayan cons'un yerine gececek
herhangi bir fonksiyon yazmak da pek kolay degil. Ama lisp'de esas
cons'a ulasmanin da bir yontemi vardir mutlaka, o sekilde
yapilabilirdi.

--
Mehmet
_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap