Praktikum 1

  1. Es folgt eine Reihe von Ausdrücken. Welchen Wert druckt der Interpretierer als Antwort auf jeden der Ausdrücke unter der Annahme, daß die Ausdrücke in der angegebenen Reihenfolge ausgewertet werden?
    ==>10
    
    ==>(+ 5 3 4)
    
    ==>(- 9 1)
    
    ==>(/ 6 2)
    
    ==>(+ (* 2 4) (- 4 6))
    
    ==>(define a 3)
    
    ==>(define b (+ a 1))
    
    ==>(+ a b (* a b))
    
    ==>(= a b)
    
    ==>(if (and (> b a) (< b (* a b))) b a)
    
    ==>(cond ((= a 4) 6)
    		((= b 4) (+ 6 7 a))
    		(else 25))
  2. Definieren Sie eine Prozedur, die drei Zahlen als Argumente hat und die Summe der Quadrate der beiden größeren Zahlen als Ergebnis liefert.
  3. Ben Bitdiddle hat eine Möglichkeit gefunden, zu überprüfen, ob der Interpretierer, mit dem er zu tun hat, in applikativer Reihenfolge auswertet oder in normaler Reihenfolge. Er definiert die folgenden beiden Prozeduren:
    (define (p) (p))
    
    (define (test x y)
     (if (= x 0)
      0
      y))
    Dann wertet er folgenden Ausdruck aus:
    (test 0 (p))
    Welches Verhalten wird ein Interpretierer zeigen, der in applikativer Reihenfolge auswertet, welches einer, der in normaler Reihenfolge auswertet? Begründen Sie Ihre Antwort genau!