(define l1 '(1 2 3 4) ) ;uzimanje prvog elementa vraca atom (car l1) ;uzimanje ostatka liste vraca drugu listu (cdr l1) ;specijalno ako primenimo cdr vise puta, dok ne ;ispraznimo listu (cdr (cdr (cdr (cdr l1)))) ;zasto je bitno pisati apostrof pre definisanja liste? ;da bi je razlikovali od funkcije ;jer (1 2 3 4) zapravo predstavlja funkciju koja se zove ;1 a ima argumente 2,3,4 ;a '(1 2 3 4) ovo je lista (define (duzina L) (cond ((null? L) 0) (else (+ 1 (duzina (cdr L)))) ) ) (define (poslednji L) (cond ((null? (cdr L)) (car L)) (else (poslednji (cdr L))) ) ) (define (element a L) (cond ((null? L) #f) ((= a (car L)) #t) (else (element a (cdr L))) ) ) ;convert '(1 2 3 4) -> 4321 (define (convert L) (cond ((null? L) 0) (else (+ (car L) (* 10 (convert (cdr L))))) ) ) ;dodavanje 1 elementa na pocetak liste ;(cons 1 '(2 3 4)) -> '(1 2 3 4) ;spajanje dve liste (define (spoji L1 L2) (cond ((null? L1) L2) (else (cons (car L1) (spoji (cdr L1) L2))) ) ) ;obrtanje liste ;da bi obrnuli listu najpre obrnemo rep liste, ;pa prvi element dodamo na kraj, medjutim kako za ;to ne postoji f-ja, mozemo alternativno da dodamo listu na listu ;No, potrebno je pre toga element pretvoriti u listu ;koriscenjem f-je list. Npr (list 1) -> '(1) (define (obrni L) (cond ((null? L) L) (else (spoji (obrni (cdr L)) (list (car L)))) ) )