Merhaba,

On Oct 16 11:05, Vehbi Sinan Tunalioglu wrote:
> (let ((a 5))
>   (define b 
>     (lambda (x)
>       (* x a)))
>   (b 4))
> 
> Seklinde tanimlamaniz mumkun. Yoksa yanlis mi anladim?

Sanırım. Sizin verdiğin belgede yazılı olan şu şekildeydi:

(let ((e 1))
  (defun closure-1 () e))

Ve closure-1 fonksiyonu let scope'unun dışından da çağrılabiliyordu. Ama
Scheme'de, yapılan tanımlama, var olduğu scope'a ait ve mevcudiyeti
ancak orada geçerli. (Aslında çok şık bir CL özelliği bu.)

> Guile implementasyonunu bir closure icerisinde kullanmaniz mumkun
> olabilir mi?

Bildiğim (ve yukarıdaki örnekten anladığım) kadarı ile Scheme ve CL'deki
closure tanımlaması biraz farklılıklar içeriyor. Ve sanırım bu farkta
sizin aklınıza gelen çözümü Scheme'de biraz olanaksız kılıyor.

> Ya, aslinda SICP'ye (http://mitpress.mit.edu/sicp/) bakacak olursaniz
> kendi obje sisteminizi nasil implemente edebileceginize dair cok
> sasirtici ornekler mevcut. Closure'lardan faydalaniliyor. Sorununuza
> kesin cozum olabilecegine inaniyorum. Bu ornekler insani hafif dumura
> surukleyebilir. Ama 10 kaplan gucunde bir bilgidir bu!

Kesinlikle. Programming Pearls'ü hatmettiğim vakit SICP ve Sedgewick'in
Algorithms kitabını paralel okumayı düşünüyorum.


İyi çalışmalar.

_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap