-Original Message-
From: [EMAIL PROTECTED] on behalf of aykut ÿe7aÿf0layan
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