-----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

Cevap