Merhaba,

Teker teker cevaplamak yerine topluca buraya yazacağım. Cevabın ardından
dileyenlere üzerime atmaları için çürük yumurta ve domates servisi
yapılacaktır.

Açıkçası burada CLOS'tan bahsetmekteki amacım sadece diğer dillerde OOP
tecrübesi olan birinin CLOS terminolojisi karşısında şaşırmasını
önlemek. Aslında amacım sadece slot kavramına ve CL'de metodların nasıl
tanımlandığına ilişkin temel bilgi vermek. Bu nedenle diğer dillerde hiç
rastlanmayan metod kombinasyonları, efektif metodların oluşturulması
gibi konulardan bahsetmiyorum.

Slotları tanımlarken biraz daha çeşitli örnekler olması gerektiği
konusuna katılıyorum. Birkaç farklı format ekleyeceğim.

:initform içinde error kullanmak PCL'de gördüğüm ilginç bir teknikti.
Bildiğim kadarıyla sadece make-instance sırasında o yuvanın initarg'ı
lambda listesi içinde yeralmazsa çalıştırılıyor. Bu nedenle yvalara
değer atanmasını mecburi kılma için pratik bir yöntem gibi gözüktü.

make-instance yazı içinde sadece tek cümlede geçiyor, onu birazcık daha
detaylı anlatabilirim sanırım. En azından sözdizimi konusunda biraz daha
detay verebilirim.

:initform'in içinde çalıştırıldığı ortam veya defgeneric'in :method
seçeneği gibi konuların bu yazının amacının oldukça dışında olduğunu
düşünüyorum.

Son olarak lambda listesi kullanmak bence de daha doğru bir yaklaşım
ancak en azından ne olduğuna dair kısa bir açıklama verilmesi gerekir
diye düşünüyorum. Aksi halde insanlara itici gelecektir. Bu durumda da
belge amacına ulaşmaz ve insanlarda hiçbir zaman lamda listesinin
anlamını çömeye kalkışmazlar. Sanıyorum en azından bir dipnotile
açıklamak sorunu çözecektir.

Eleştirileriniz için teşekkürler.

Thus saith Bulent Murtezaoglu :
> 
> (yorumlar rev=5 icin)
> 
> Iyi bir baslangic olmus bence, yalniz girilen yerlerde cok fazla detay 
> gerekecek ve bunu toparlamaya harcanan cabaya degecek mi bilmiyorum.  CLOS 
> kucuk bir sistem degil, siz hakkiyla anlatirsaniz anlayabileceklerin PS'in 
> kitabindan da okuyabileceklerini de dusunmek lazim belki.  Gozume carpanlari 
> geciyorum.
> 
> - defmethod, defclass ve defgeneric icin kullanilan sablonlar ne kus ne deve 
> olmus, belki bastan kisitli bir altkume gosterecegim deyip (ucw vs. icin 
> gerekli olan) topu baska yere atmak daha dogru olur.  
> 
> - Slot/yuva cok hos olmus bence.  
> 
> - Initform'a error koymak ilginc ama o yola girileckse, slot-unbound diye bir
> generic fonkyon oldugundan da bahsetmek lazim.  (ama o derse gelinceye kadar 
> initialize-instance'dan da bahsetmek lazim belki.  Yani is bir anda buyuyor.)
> 
> Accessorlar anlatilirken kullanilan ontanim ifadesi yaniltici olabilir.
> 
> (defclass sinif ()
>   ((yuva1 :accessor ayse)))
> 
> mumkun (bu initarg kisminda da boyle anlatilmis zaten).  Tabii 
> 
> (defclass sinif ()
>   (yuva1))
> 
> de mumkun.  
> 
> - ilklendirme 'initialization'i da cagristiriyor.  
> 
> - burada make-instance'dan bahsetmek lazim bence.  
> 
> - initformun hangi lexical/dynamic environment icinde evaluate edilecegini 
> soylemek gerekir belki?   
> 
> - defgeneric'in metodlarin icerigi hakkinda bilgi tasimadigi tam da 
> dogru degil.  Bazen :method opsyonuyla en azindan default method vermek 
> makul olabiliyor (initform'daki error gibi mesela).
> 
> - verilen sablonda tek sinif degiskeni gozukuyor, cogunlukla boyle 
> kullanilsa da tanimin boyle verilmesi yaniltici olabilir.  Takip eden 
> cumlede 'genelde' denmesi yeterli degil bence.
> 
> - parametre listesi yerine, dogrudan standart terminolojiye donup 'lambda 
> listesi' demek daha dogru bence.  Cunku nasil olsa bu dokuman amacina 
> ulasirsa insanlar surada verilen bilgiyi kismen de olsa ogrenmek durumunda
> kalacaklar:
> 
> http://www.lispworks.com/documentation/HyperSpec/Body/07_fd.htm
> 
> iyi bayramlar, 
> 
> BM
> 
>  
> 
> 
> _______________________________________________
> 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

-- 
Sevgi Saygı GNU/Linux
########################################################################
Writing non-free software is not an ethically legitimate activity, so if
people who do this run into trouble, that's good!  All businesses based
on non-free software ought to fail, and the sooner the better.
        -- Richard Stallman
########################################################################
Tonguç Yumruk

Attachment: signature.asc
Description: Digital signature

_______________________________________________
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