Funktionell programmering

Instuderingsfrågor inför lektionen 13 mars

1. Den "halvklara" funktionen från föreläsningen.

2. Funktionen satt-ihop[l1;l2], tar två argument, båda listor. Funktionen returner en lista som först innehåller alla element ur l1 och därefter alla ur l2.

Exampel

(satt-ihop '(1 b c) '(d c f)) ==> (1 b c d c f)
Ledning: Börja med att skriva fler exempel.

3. Denna uppgift är lite knepigare än den förra. Funktionen lika[x;y], där x och y är atomer eller listor, avgör om x och y är likadana atomer/listor.

Exempel

(lika 'x 'x) ==> T
(lika 'x 'y) ==> NIL
(lika 'x '(x)) ==> NIL
(lika '(x (y)) '(x (y))) ==> T
Ledning: En vettig början på en fallanalys kan vara: 1. Är x en atom?
1.1 Är y en atom?Detta fall kollas bara om x var en atom

2. Annars (vi vet att x är en lista). Är x den tomma listan?

4. Inte knepigare än den förra. Funktionen platt[l], där l är en lista som innehåller atomer eller listor som element. Funktionen returnerar en lista som innehåller samma atomer som i l, i samma ordning men utan djup

Exempel

(platt '(a (b))) ==> (a b)
(platt '(a b)) ==> (a b)
Frågor? Oklarheter? Misstänkte skrivfel? Hör av er!

Anders


Anders Berglund			       Office: Room 1254
Department of Computer Systems	       E-mail: Anders.Berglund@docs.uu.se
Box 325				       Phone (work): +46 18 18 31 67
S-751 05 Uppsala		       Mobile phone: +46 70 582 45 80
Sweden				       Fax (work):   +46 18 55 02 25