Volkan YAZICI wrote:
---- {0} demiş ki:
Listemi islemden gecirip ...

İşlemden geçirmek ile, bir tür sıralamayı kast ettiğinizi varsayıyorum.

... her bir elemaninin basina
sira no'sunu nasil ekleyebilirim.

(loop for item in (sort list pred)
       for idx from 0
       collect (cons idx item))

Ama sizin yerinizde olsam (coerce (sort list pred) 'vector) tarzı bir şey 
kullanırdım.
Bunun genel adı "zip" diye biliyorum. Örneğin elinizdeki listeyi, birden sonsuza sayılar listesi ile birebir işleme sokuyorsunuz. Bu genel özelliği CL'de acemice aşağıdaki gibi ifade edebilir miyiz acaba?

(defun zip (fn &rest lsts)
 (if (any #'null lsts)
     nil
     (cons (apply fn (mapcar #'car lsts))
           (apply #'zip fn (mapcar #'cdr lsts)))))

(defun any (fn lst)
 (if (member nil lst)
     (or (funcall fn (car lst))
         (any fn (cdr lst)))
     nil))

CL-USER> (let ((mylist '(a b c d e f)))
          (zip #'list (core-server::seq (length mylist)) mylist))
((0 A) (1 B) (2 C) (3 D) (4 E) (5 F))

Bu işlem haskell'de çok basit, "zip [1..] mylist" şeklinde bir ifade yetiyor ki bu yüzden seviyoruz onu.

Prelude> zip [1..] "abc"
[(1,'a'),(2,'b'),(3,'c')]

Sevgiler...

--
Aycan iRiCAN
Kor Bilişim Ltd. Şti.
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