Volkan YAZICI <[EMAIL PROTECTED]> writes:

> Merhaba,
>
> Scheme'de MAP sonucu dönen listeleri birbirine eklerken şöyle bir şey
> kullanıyorduk: (APPLY APPEND (MAP ...)). Benzer şeyi Common Lisp'te
> yapmanın ise bir kaç yolu var sanırım. Bunlardan benim bildiklerim
> şöyle:
>
>   (apply #'append (mapcar ...))
>   (reduce #'append (mapcar ...) :from-end t)
>
> Bunun dışında soruyu freenode'takilere sorduğumda alternatif olarak
> bir de MAPCAN'i ürettiler fakat tam olarak hangisinin tercih edilmesi
> gerektiğini anlayamadım.
>
> Acaba konu hakkında bilgisi olanlar bu alternatiflerin bellek/işlemci
> kullanımı açısından kıyaslamasını yapabilirler mi? Ne gibi durumlarda
> hangi yöntemi kullanmalıyız?

Selam,

Eğer büyük listeler üzerinde işlem yapacaksanız reduce kullanmanızı
öneririm. Aksi durumlarda apply size hem zaman hem de yer kazandırır.

Apply ile bir işleve verdiğiniz işlenenler listesinin üst limiti
olacaktır. Ancak bu limiti aşmadığınız sürece işler lehinize gider.

 (+ 1 2 3 .....)

Ancak reduce kullanırsanız böyle bir limitle ilgilenmezsiniz. Ancak
işlem görüldüğü gibi az da olsa bir yük getirmektedir.
 
 (+ 1 (+ 2 (+ 3 ...)))

Sevgiler...

-- 
Aycan iRiCAN
KOR Bilişim Teknolojileri
http://www.core.gen.tr/

_______________________________________________
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