Li

Listák ebben a kurzusban: Common Lisp

15 feladat

A(z) Listák fogalomról

A listák nagyon gyakori adattípus a Common Lispben. cons cellák sorozatából épülnek fel. Minden car a lista egy eleme, minden cdr pedig vagy a következő cons cella, vagy egy lezáró atom.

Az olyan listát, amely az üres listával zárul, „szabályos listának” nevezzük.

Az olyan listát, amely az üres listától különböző atommal zárul, „pontozott listának” nevezzük (arról kapta a nevét, hogyan íródik ki: (cons 'a 'b) ;=> (a . b)).

Egy lista körkörös is lehet, ha a listában valamely cons cella egy későbbi cons cella cdr-je. Például: (let ((x (list 1))) (setf (cdr x) x) (write x :stream t :circle t) :done). A körkörös listákkal óvatosan bánj, mert ha úgy íratod ki őket, hogy közben a *print-circle* változót nem kötötted t-re, végtelen ciklusba kerül, és lefagy a REPL (ebben a példában a write függvénynek átadott :circle t miatt a *print-circle t-re lesz kötve).

Listák összefűzése

Az append függvényt tetszőleges számú listával meghívhatod, akár 1-gyel vagy 0-val is:

(append '(a b c) '(1 2 3)) ; => (A B C 1 2 3)
(append '(a b c) '()))     ; => (A B C)
(append '(a b c))          ; => (A B C)
(append)                   ; => ()

Az append alternatívája a nconc, amely ugyanazt az eredményt adja, de mellékhatásként módosítja a listákat. Legyél óvatos a nconc használatakor, mert meglepő hatásai lehetnek.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Listák fogalmat

A gyakorlás zárolva

Oldj fel még 5 feladatot, hogy gyakorolhasd a(z) Listák fogalmat