Leo: |
Volgens mij zit er een fout in jouw Forth. Kijk eens wat er gebeurt:
2 4 MAX . [rtn] 4 ok
200 400 MAX . [rtn] 400 ok
Nog niks aan de hand. Maar nu:
20000 40000 MAX . [rtn] 20000 ok
Helemaal niet o.k. Dit is onzin! Ik weet wat MAX ( x y - z ) moet doen.
Het resultaat z is de grootste van het paar x en y en
dat klopt hier echt niet.
Is je dat nooit eerder opgevallen?
|
Theo: |
Tja, ik moet zeggen dat het er raar uitziet, en toch.. het is correct.
|
Leo: |
Ik ben zelfs zo ijverig geweest om te proberen om MAX opnieuw
en beter te definiëren:
: MIJNMAX ( x y - z )
2DUP < IF NIP EXIT THEN DROP ;
Maar het gekke is dat die dezelfde fout maakt.
20000 40000 MIJNMAX . [rtn] 20000 ok
|
Theo: |
De fout hangt samen met de KLEINER-DAN.
|
Leo: |
Als je dat wel weet, waarom heb je hem dan niet verbeterd?
Je bent toch altijd bezig om die Forth van jou sneller en beter te maken!
|
Theo: |
De KLEINER-DAN is niet fout, je hebt hem verkeerd gebruikt.
|
Leo: |
??
|
Theo: |
Wat zeg je hier van:
20000 . [rtn] 20000 ok
40000 . [rtn] -25536 ok
|
Leo: |
Je verwacht misschien dat dit verhelderend werkt?
|
Theo: |
En hiervan:
-25536 40000 - . [rtn] 0 ok
|