-----Original Message----- From: [EMAIL PROTECTED] on behalf of aykut "ÿffffe7aÿfffff0layan Sent: Sun 11/4/2007 12:01 PM To: lisp grup Subject: [cs-lisp] sual 3 > Listemi islemden gecirip her bir elemaninin basina > sira no'sunu nasil ekleyebilirim.
Ne tur bir islem? Bu belirtilmemis. Listeye uygulanan islem yani fonksiyon yine bir liste mi donduruyor. Eger bir liste donduruyor ise ve buna lst dersek: (defun add-order-no (lst) "Returns a list by adding the order number to each item in lst, assuming lst is a list." (if (listp lst) (loop for i = 0 then (incf i) for item in lst collect (cons i item)) (princ "argument lst is not of type list!"))) Yani listeye uygulanan isleve, yani fonksiyona F dersek ve bu bir liste donduruyorsa o zaman (add-order-no (F orjinal-liste)) bize istedigimiz seyi dondurur, F'yi isin icine karistirmadan birkac ornege bakacak olursak: CG-USER(10): (add-order-no '(1 2 3)) ((0 . 1) (1 . 2) (2 . 3)) CG-USER(14): (add-order-no '()) NIL CG-USER(15): (add-order-no '1) argument lst is not of type list! "argument lst is not of type list!" CG-USER(17): (add-order-no '(a b c)) ((0 . A) (1 . B) (2 . C)) Peki ya listemiz suna benziyorsa: '(a (do re) (mi fa) (sol la) c)) O zaman ne olur? CG-USER(18): (add-order-no '(a (do re) (mi fa) (sol la) c)) ((0 . A) (1 DO RE) (2 MI FA) (3 SOL LA) (4 . C)) Bu istedigimiz bir sonuc mu? Sual 3 iyi tanimli degil gibi sanki. Bu arada fonksiyonun bir de dokumantasyonu var, ona programatik olarak nasil erisiriz diye merak edilirse: CG-USER(20): (documentation 'add-order-no 'function) "Returns a list by adding the order number to each item in lst, assuming lst is a list." Genel olarak bu ana tema ustune cesitlemeler gelistirilebilir. -- Emre Sevinc
_______________________________________________ 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