Boyle taksit taksit yazdigim icin kusura bakmayin:
baska islerden firsat buldukca yaziyorum. CL ile
scheme kodu arasinda anlasilirlik bakimindan cok fazla
bir fark olmamasi gerekir. Bir ornek olarak, sizin
gecen mesajinizda verdiginiz forcer kodunu CL ile
yazarsak soyle oluyor (CL bilmiyorum dediniz ya, onun
icin Forcer'in scheme kodunu cevireyim: boylece
karsilastirma sansiniz olur diye):
(defun combinations (lst)
; #scheme kanalindan forcer'in kodu.
(labels ((comby (lst)
(if (null (cdr lst))
(list lst)
(let ((curr (car lst))
(combs (comby (cdr lst))))
(append (list (list curr))
combs
(mapcar(lambda (comb)
(cons curr comb))
combs))))))
(append (list '()) (comby lst))))
Ben boskumeyi kombinasyon listesine eklemek icin kucuk
bir degisiklik yaptim o kadar. Gordugunuz gibi
neredeyse ayni iki versiyon. Dilden kaynaklanan pek
birsey yok. Genellikle ben de Scheme'i daha zarif
buluyorum, henuz ikisunde de ciddi bir is yapmadigim
icin bunun pek bir onemi yok :).
Parrot ile ilgili birsey bilmiyorum desem dogru olur.
VM fikri bana da guzel geliyor: ozellikle portabilite
acisindan degil de, daha cok belki degisik dillerde
yazilan rutinleri ayni programda kullanmayi
kolaylastirabilir diye... Benim numerik isler yapmayi
dusunmemden dolayi cekincem performans: ama bir JIT,
hotspot, vb. teknoloji ile desteklenirse gercekten
guzel olur. Tabii tasinabilirlik de ayrica guzel: ben
degil ama danismanim Linux kullaniyor :).
Saygilar,
Nusret
--- [EMAIL PROTECTED] wrote:
> ---- nusret <[EMAIL PROTECTED]> demiÅ ki:
> > forcer'in lisp kodu sizce karisik mi?
>
> forcer'ın Scheme kodu karıÅık deÄil. Oldukça
> sade ve anlaÅılır; bu yüzden örnek olarak onu
> eklemiÅtim bir tek. Sanırım derdimi yanlıÅ
> anlattım. Ben biraz da sizlerin fikirlerinizi,
> soruna bakıŠaçılarınızı görmek istemiÅtim.
> (Bilirsiniz, deneyim çok farklı bir Åey.)
>
> Bu arada, evet Common Lisp çözümleri bana
> karıÅık geldi. (Common Lisp bilmediÄimi tekrar
> hatırlatırım.) Bakın önerilen CL çözümleri
> Åu Åekilde:
>
> ;
> ; Ãözüm [1]
> ;
> (define combinations
> (lambda (lst)
> (if (< (length lst) 2)
> (list lst))
> ; otherwise
> (let* ((curr (car lst))
> (combs curr))
> (append combs
> (list curr)
> (let iterate ((comb-lst combs))
> (if (null? comb-lst)
> '()
> (append (list curr comb-lst)
> (iterate (cdr
> comb-lst)))))))))
>
> ;
> ; Ãözüm 2
> ;
> (defun combinations (lst)
> (labels ((rec (front end)
> (cons (append front (list (car lst))
> end)
> (if front
> (rec (cdr front) (cons (car
> front)
> end))
> nil))))
> (when lst
> (cons (list (car lst))
> (mapcan #'(lambda (c)
> (rec c nil))
> (combinations (cdr lst)))))))
>
> ;
> ; Yukarıdakinin Scheme için uyarlanmıŠhali.
> ;
> (define mapcan
> (lambda (fun lst)
> (if (null? lst)
> '()
> (append (fun (car lst))
> (mapcan fun (cdr lst)))
> )))
>
> (define combinations
> (lambda (lst)
> (letrec ((rec (lambda (front end)
> (cons (append front (list (car
> lst)) end)
> (if (null? front)
> '()
> (rec (cdr front) (cons
> (car front)
>
> end)))))))
> (if (null? lst)
> '()
> (cons (list (car lst))
> (mapcan (lambda (c)
> (rec c '()))
> (combinations (cdr
> lst))))))))
>
> Bir de Parrot konusuna dikkatleri çekmek
> istemiÅtim. Ne de olsa Parrot'un (tam olmasa da) 2
> tane Scheme, bir tane de Common Lisp derleyicisi
> var. Ek olarak VM, kodun taÅınabilirliÄini de
> oldukça arttıran bir felsefe bence. Fakat
> görünüÅe bakılırsa listeden bu konuda
> "tınnnn" sesi geldi. :)
>
> > Godel teoremi ile ilgili olarak: ben baska bir
> kitap
> > buldum, teoremin birkac farkli ispatini veriyor.
>
> Her iki tamsızlık teoreminin de farklı
> ispatları? Bu konuda kitabı okuduktan sonra
> listeye bunun hakkında biraz daha bilgi verir
> misiniz? Tamsıklık teoreminin farklı ispatları
> bana düÅük bir ihtimal gibi geldi. Ãyleyse bile,
> gerçekten tadından yenmez bir eser olacaÄı
> kesin.
>
> > Ama
> > bu pop kitap tarzi birsey degil. Turkcesi var mi
> > bilmiyorum: "Godel's Incompleteness Theorem",
> > Smullyan. Teknik, ama anlasilmaz degil: sadece
> sirali
> > olarak okuma gerektiriyor. Fakat buyuk bir kitap
> > degil. Bir bos vakit bulabilirsem okuyacagim.
> Teorem
> > gerekli terimler tanimlandiktan sonra dikte
> > edildiginde karisik degil:
>
> Bu noktada biraz yanılıyorsunuz gibime geliyor.
> Daha önceden Gödel'in tamsızlık teoreminin ana
> adımlarını gördüÄünüze emin misiniz?
> Ãzellikle olayın koptuÄu nokta, yani Gödel'in
> Jules Richard'ın "Richard Paradox'u"nu
> kullandıÄı noktaya bakmanızı öneririm. Eminim
> bir kere baktıktan sonra, anlayana kadar tekrar
> tekrar bakacaksınız. Ve bir kez anladıktan sonra,
> "Tamam anladım artık." deyip arkanıza
> yaslandıÄınızda anladıÄınız Åeyi nasıl
> anladıÄınızı unuttuÄunuzu fark edeceksiniz.
> Neden mi bu kadar eminim? Gödel'in 2 tamsızlık
> teoremini de İ.T.Ã. Mat. Müh.'te seminer ile
> aralarında iki hocanın da bulunduÄu 4-5 kiÅiye
> anlatmaya çalıÅmıÅtım da oradan biliyorum.
> Eminim odadan çıkana kadar herkes anlamıÅtı. :)
>
>
> İyi çalıÅmalar.
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp