Leo: |
Meiner Meinung nach steckt in deinem Forth ein Fehler. Sieh doch mal, was da passiert:
2 4 MAX . [rtn] 4 ok
200 400 MAX . [rtn] 400 ok
Bis jetzt noch nichts. Aber nun:
20000 40000 MAX . [rtn] 20000 ok
Das ist überhaupt nicht o.k. Absoluter Unsinn!
Ich weiß, was bei MAX ( x y - z ) herauskommen muss.
Das Ergebnis ist die größere der beiden Zahlen x und y,
und das stimmt hier ganz und gar nicht.
Ist dir das noch nie aufgefallen?
|
Theo: |
Tja, ich muss sagen, das sieht wirklich seltsam aus ...
aber richtig ist es trotzdem.
|
Leo: |
Ich bin selbst so fleißig gewesen und habe versucht, MAX neu
und besser zu definieren:
: MEINMAX ( x y - z )
2DUP < IF NIP EXIT THEN DROP ;
Das Verrückte an dieser Definition ist aber, dass sie denselben Fehler macht.
20000 40000 MEINMAX . [rtn] 20000 ok
|
Theo: |
Der Fehler hängt mit dem KLEINER-ALS zusammen.
|
Leo: |
Wenn du das schon weißt, warum hast du es dann nicht verbessert?
Du bist doch stets bemüht, dein Forth schneller und besser zu machen!
|
Theo: |
Das KLEINER-ALS ist kein Fehler, du hast es einfach falsch verwendet.
|
Leo: |
??
|
Theo: |
Was sagst du hierzu:
20000 . [rtn] 20000 ok
40000 . [rtn] -25536 ok
|
Leo: |
Du erwartest wahrscheinlich, dass mir die Sache jetzt klarer wird?
|
Theo: |
Und hierzu:
-25536 40000 - . [rtn] 0 ok
|