-----------------------------------------------------------------------------
UNIX 2
                                                       3. Uebungsblatt
______________________________________________________________________
Aufgabe 1 (0 Punkte)

    Lies aus den ,,Vorlesungsbegleitenden Unterlagen 8`` den Teil
             4
    ,,Revised- Report on the Programming Language Scheme``.
      -------  ------ -- --- ----------- -------- ------

______________________________________________________________________
Aufgabe 2 (1 Punkt)

    Schreibe in Scheme (d.h., so, dass sie in Elk ablauffaehig ist)
    eine rekursive Prozedur list-of-first-items, die als Argument eine
    Liste bestehend aus nicht-leeren Listen erhaelt.  Ihr Rueckga-
    bewert ist eine Liste bestehend aus dem jeweils ersten Element
    jeder Subliste:

    (list-of-first-items '((a) (b c d) (e f))) => (a b e)
    (list-of-first-items '((1 2 3) (4 5 6))) => (1 4)
    (list-of-first-items '((one))) => (one)
    (list-of-first-items '()) => ()

______________________________________________________________________
Aufgabe 3 (2 Punkte)

    Schreibe in Scheme eine Prozedur count-parens, die als Argument
    eine Liste bekommt und die Anzahl der oeffnenden und schliessenden
    Klammern in der Liste zurueckliefert:

    (count-parens '()) => 2
    (count-parens '(((a () b) c) () ((d) e))) => 14
    (count-parens '(((())))) => 8

______________________________________________________________________
Aufgabe 4 (1 Punkt)

    Schreibe in Scheme eine Prozedur make-incrementer mit einem Argu-
    ment x, die eine Prozedur mit der Funktion f(y) = y+x als Ergebnis
                                               - -    - -
    liefert:

    (define add-five (make-incrementer 5))
    (define x 10)
    (add-five 1) => 6
    (add-five x) => 15
    ((make-incrementer 1) 0) => 1

______________________________________________________________________
Aufgabe 5 (1 Punkt)

    Schreibe in Scheme eine Prozedur make-filter, die als Argument ein
    einstelliges Praedikat erhaelt.  Sie liefert eine Funktion
    zurueck, die als Argument eine Liste erhaelt und eine Kopie dieser
    Liste zurueckliefert, in der diejenigen Elemente fehlen, fuer die
    das Praedikat true zurueckliefert, wenn man es auf sie anwendet:

    (define odd-filter (make-filter odd?))
    (odd-filter '(0 1 2 (3 4) ((5)) 6 7 (8 9))) => (0 2 (4) (()) 6 (8))
    (define greater-than-2-filter (make-filter (lambda (x) (> x 2))))
    (greater-than-2-filter '(0 3 2 7 1 2 8 0 1)) => (0 2 1 2 0 1)

    Benutze kein define ausser fuer die Definition von make-filter.

______________________________________________________________________
Abgabe

    Elektronisch[1] am 11.05.1993, 18:00 MEZ.

_________________________

  [1] Der Tutor  begutachtet  in  ~/unix2/ueb3  die  Files  first.scm,
count.scm, incr.scm, und filter.scm.

UNIX-2 SS 93   Bormann et al                                         1


