Scheme < Scheme < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Hallo!
Mir ist die unterschiedliche Anwendung von der Normalordnung und der applikativen Ordnung (in Scheme, eigentlich theoretisch, da Scheme applikativ rechnet) nicht ganz klar.
In der Normalordnung rechnet man langsam jeden Schritt aus und in der applikativen rechnet man erst die Argummente aus und erst dan wird ausgewertet.
Doch was mache ich bei folgender Aufgabe?
Seien die Funktionen double und f definiert durch
(define (double x) (+ x x))
(define (f x y) (if (= y 0) x y))
(a) Werten Sie den Term t1 = (double (+ (f (double 4) (- 6 (/ 48 8))) 13)) in
Normalordnung aus.
(b) Werten Sie den Term t2 = (- (f 0 (double (+ (double (- 13 5)) 7))) 4) in
applikativer Ordnung aus.
Ich habe raus:
(a) 1. (double (+(f (+ 4 4) (- 6 (/ 48 6))) 13 ))
2. (double (+ (f (8) (- 6 (6))) 13 ))
3. (double (+ (f(8) (0))) 13))
4. (double (+ (f(8)) 13))
5. (double (+ 8 13)
6. (double (21))
7. (+ 21 21)
8. 42
(b) 1. (-(f 0 (double (+ (8 + 8)) 7))) 4)
2. (-(f 0 (double (+ (16)) 7)))4)
3. (- (f 0 (double (+ 23 23))) 4)
4. (- (f0 (+ 23 23)) 4)
5. (- (f0 (46)))4
6. 42
Aber ist das richtig?
Ich habe nichts gemacht außer bei (b) schneller die Argummente ausgerechnet. Ich seh bei mir zwischen der Normalordnung un der applikativen Ordnung keinen Unterschied.
Gruß
Matheauszubildender
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|