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
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