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

Cevap