>>>>> "ZK" == Zekeriya KO <Zekeriya> writes:

    ZK> ... Aynende öyle oldu. subseq ve cons
    ZK> fonksiyonlarını biliyordum ama nconc'u şimdi öğrendim. Common
    ZK> Lisp gerçekten de büyük bir dil. ...

Aslinda temiz ve randimanli bir cozum degildi o, soyledigim gibi.
Nconc'u oraya kasten koydum biraz da, tek satiri degistirerek ve
asgari maliyetle is yapmak icin.  Append'in de orada ayni sekilde
calismasi lazim ama append subseq'in kopyaladigini bir daha
kopyalar.  Neyse, bir ornek yapayim:

CL-USER> (setf *foo* '(1 2 3 4 5))
(1 2 3 4 5)
CL-USER> (append *foo* '(a b c))
(1 2 3 4 5 A B C)
CL-USER> *foo*
(1 2 3 4 5)
CL-USER> (nconc *foo* '(a b c))
(1 2 3 4 5 A B C)
CL-USER> *foo*
(1 2 3 4 5 A B C)

Gordugunuz gibi nconc listeyi degistirdi.  Boyle kelime gerektirmedigi
halde 'n' ile baslayan fonksyonlar genelde verilen argumanlari
degistirebilirler[1].  N non-consing demek, yani yeni kopya
yaratmiyor, ek hafiza kullanmiyor, cons etmiyor.  Garantili degil
hepsi icin, ama o 'n' oradan geliyor.  Nconc da "non-consing concatane"
demek.

BM

[1] Suradan n'lilere bakabilirsiniz:

http://www.lispworks.com/documentation/HyperSpec/Front/X_Alph_N.htm


_______________________________________________
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