Ach schön, besten Dank! Kennst Du Dich damit aus? Und wie sieht es mit PDF für CPC KUMA aus?
Ich bin hier gerade mit meinem Microprofessor MF-IP Forth zu Werke, und habe 3 Tage lang verzweifelt versuch, Fakultät rekursiv zu programmieren. Jetzt habe ich ein KUMO Forth PDF Manual für die MSX-Version gefunden, und da war ein Tipp, den ich übertragen konnte... die Sprache ist ja sowas von gehirnverdrehend. Aber echt interessant. Und durchaus einige Gemeinsamkeiten mit LISP - die Unterscheidung zwischen Compile-Time und Runtime-Programmierung, im gleichen Programmiermodel! Sehr genial, dass man selbst den Compiler erweitern kann in der Sprache. Wie in LISP... und doch total anders.
Machst Du was damit?
Hintergrund:
: FACT DUP < 2 IF DROP 1 ELSE DUP 1- FACT * THEN ;
geht nicht, weil FACT nicht bekannt ist wenn FACT kompiliert wird. Daher hatte ich versucht, DOER/MAKE zu portieren, aber dazu muss man leider bereits ein Forth-Profi sein. Also gescheitert; das MF-IP Forth Manual ist sehr dürftig. Allerdings erklärt es alle Worte im Glossary. Aber zum Lernen komplett ungeeignet, das ist wie eine Sprache für Außerirdische.
Dann habe ich allerdings im KUMA FIG-Forth MSX Manual das hier gefunden:
: CALL LATEST PFA CFA , ; IMMEDIATE
: FACT DUP < 2 IF DROP 1 ELSE DUP 1 - CALL * ENDIF ;
Das funktionierte dann auch im CPC Kuma-Forth (gleicher Compiler, denke ich mal), und konnte das mit einer kleinen Änderung direkt auf dem Microprofessor laufen lassen!
: CALL LATEST PFA CFA , ; IMMEDIATE
: FACT DUP < 2 IF DROP 1 ELSE DUP 1- CALL * THEN ;
📎 20211204_083724.jpg
📎 20211204_083823.jpg
📎 20211204_083808.jpg