On this page:
list
cons
append
first
rest
length
list-ref
member?
remove
remove-all
reverse
range
cons?
list?
empty?
empty
6.12

2.6 Listat

procedure

(list x ...)  list?

  x : ei-tyyppivaatimusta
Luo listan, joka sisältää sille annetut argumentit. Lista muodostuu ns. cons-soluista, joissa on aina vasen ja oikea alkio. Listan viimeisen cons-solun oikean puoleinen alkio on aina '().
> (list 1 2 3)

'(1 2 3)

procedure

(cons x y)  list?

  x : ei-tyyppivaatimusta
  y : list?
Yhdistää x:n listaan y, joka voi olla myös tyhjä lista empty eli '().
> (cons 1 (list 2 3))

'(1 2 3)

> (cons "a" empty)

'("a")

procedure

(append x y z ...)  list?

  x : list?
  y : list?
  z : list?
Yhdistää monta listaa yhdeksi listaksi.
> (append (list 1 2) (list 3 4))

'(1 2 3 4)

procedure

(first x)  ei-tyyppivaatimusta

  x : cons?
Palauttaa ei-tyhjän listan ensimmäisen alkion.
> x

'(2 "hei" #true)

> (first x)

2

procedure

(rest x)  ei-tyyppivaatimusta

  x : cons?
Poistaa ei-tyhjän listan ensimmäisen alkion ja palauttaa jäljelle jäävän listan.
> x

'(2 "hei" #true)

> (rest x)

'("hei" #true)

procedure

(length l)  luonnollinen-luku

  l : list?
Palauttaa listan alkioiden määrän.
> x

'(2 "hei" #true)

> (length x)

3

procedure

(list-ref x i)  ei-tyyppivaatimusta

  x : list?
  i : luonnollinen-luku
Palauttaa i:n osoittaman alkion listasta x. Listan indeksointi alkaa nollasta.
> v

'(1 2 3 4 5 6 7 8 9 A)

> (list-ref v 9)

'A

> (list-ref v 0)

1

procedure

(member? x l)  totuusarvo

  x : ei-tyyppivaatimusta
  l : list?
Tutkii, onko x mukana listassa (vertailu tehdään käyttämällä equal?).
> x

'(2 "hei" #true)

> (member? "hei" x)

#true

procedure

(remove x l)  list?

  x : ei-tyyppivaatimusta
  l : list?
Palauttaa listan, josta on poistettu ensimmäinen arvo, joka vastaa x:ää (vertailussa käytetään equal?).
> x

'(2 "hei" #true)

> (remove "hei" x)

'(2 #true)

> z

'(2 "hei" #true "hei")

> (remove "hei" z)

'(2 #true "hei")

procedure

(remove-all x l)  list?

  x : ei-tyyppivaatimusta
  l : list?
Palauttaa listan, josta on poistettu kaikki arvot, jotka vastaavat x:ää (vertailussa käytetään equal?).
> z

'(2 "hei" #true "hei")

> (remove-all "hei" z)

'(2 #true)

procedure

(reverse l)  list?

  l : list?
Palauttaa käännetyn listan.
> k

'(0 1 2 3 4 5 6 7 8 9)

> (reverse k)

'(9 8 7 6 5 4 3 2 1 0)

> z

'(2 "hei" #true "hei")

> (reverse z)

'("hei" #true "hei" 2)

procedure

(range alku loppu askel)  list?

  alku : luku
  loppu : luku
  askel : luku
Luo listan lukuja välillä alku - loppu niin, että askeleena käytetään askel.
> (range 0 10 2)

'(0 2 4 6 8)

> (range 10 0 -2)

'(10 8 6 4 2)

procedure

(cons? x)  totuusarvo

  x : ei-tyyppivaatimusta
Tutkii, onko x rakenteeltaan lista tai puu, eli koostuuko se ns. cons-soluista, joissa on aina vasen ja oikea alkio.
> (cons? (cons 1 '()))

#true

> (cons? 42)

#false

procedure

(list? x)  totuusarvo

  x : ei-tyyppivaatimusta
Tutkii, onko x rakenteeltaan lista, eli ketjutettuja cons-soluja, jossa ketjun viimeinen alkio on tyhjä lista '().
> (list? (list 1 2 3))

#true

> (list? (cons 1 '()))

#true

> (list? 42)

#false

procedure

(empty? x)  totuusarvo

  x : ei-tyyppivaatimusta
Tutkii, onko x tyhjä lista '().
> (empty? empty)

#true

> (empty? '())

#true

> (empty? (cons 2 '()))

#false

> (empty? 42)

#false

value

empty : list?

Vaihtoehtoinen tapa ilmaista '() eli tyhjä lista.

> empty

'()