-----Original Message-----
From: [EMAIL PROTECTED] on behalf of aykut "ÿffffe7aÿfffff0layan
Sent: Thu 11/1/2007 6:07 PM
To: cs-lisp@cs.bilgi.edu.tr
Subject: [cs-lisp] recursive function
 
> I try to replace some elements of a list through using
> recursive function; but i cannot. Can you advise me?

Merhaba, comp.lang.lisp'ten farkli olarak, buraya Turkce yazabilirsin, bu 
e-posta listesine abone olanlarin hemen hepsi Turkce biliyor.


> Function: replace a with e, and b with d.
> (defun replace (lst)
>               (cond ((null lst) 1)
>                     ((eq lst 'a) 'e)
>                     ((eq lst 'b) 'd)
>                     (t (cons ((car (lst)) (replace
> (cdr lst)))))))
>
> What is wrong with that code? 

Oncelikle CL'de zaten replace diye bir sey var, bunu belirtelim:

 http://www.lisp.org/HyperSpec/Body/fun_replace.html

HyperSpec dostumuzdur. O yuzden simdilik replace'i bozmak yerine my-replace 
diyelim.

Ardindan da soyle bir kod deneyelim:

(defun my-replace (lst)
  (cond ((null lst) '())
        ((eq (car lst) 'a) (append (list 'e) (my-replace (cdr lst))))
        ((eq (car lst) 'b) (append (list 'd) (my-replace (cdr lst))))
        (t (append (list (car lst)) (my-replace (cdr lst))))))

Simdi bu kodu Turkce yazarsak:

- Eger lst null ise o zaman '() yani null dondur
- Eger lst'nin ilk elemani 'a ise o zaman e'yi liste yap ve dibine 
my-replace'in lst'nin geriye kalanina uygulanmis halini ekle
- Eger lst'nin ilk elemani 'b ise o zaman d'yi liste yap ve dibine 
my-replace'in lst'nin geriye kalanina uygulanmis halini ekle
- Eger bunlardan hicbiri degilse o zaman lst'nin ilk elemanini liste yap ve 
dibine my-replace'in lst'nin geriye kalanina uygulanmis halini ekle

(son kismi daha duzgun ve kitabina uygun bir sekilde yazabilir miyiz, bu, okura 
bir egzersiz olarak birakilmistir, pedagojik olmaya calisiyorum su anda)

Simdi bu kodu birkac ornek liste uzerinde denersek:

CG-USER(39): (my-replace '(x y z))
(X Y Z)
CG-USER(40): (my-replace '(a b c))
(E D C)
CG-USER(41): (my-replace '(z b a c d e f))
(Z D E C D E F)
CG-USER(42): (my-replace '())
NIL

Acaba bu aciklama yeterli geldi mi?

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