vince: ca en est déja. la compilation se fait en temps réel.
c'est ca qui fait gagner énormément de temps.
tu veux faire un opérateur d'élévation au carré?
: SQUARE DUP MUL; ( num -- num )
: démarre le compilateur
SQUARE: le mot qu'on définit
DUP: duplique le paramètre au sommet de la pile
MUL: multiplie les deux éléments du sommet de la pile
; termine la compilation
les parentheses sont un commentaire, on documente que la fonction prend un param sur la pile et en rend un.
Ceci se compile en une fonction prête à utiliser dans les actions suivantes
genre
3 SQUARE .
la on a pas de : initial donc on est en mode interpréteur, pas compilateur. les mots sont exécutés directement
3 -> pas un mot connu, nombre valide. Pousse 3 sur le sommet de la pile.
SQUARE: fonction connue: on l'exécute. ca applique la fonction square (pas besoin de call) qui consomme 3 et pousse 9 sur la pile
. : fonction connue, affiche le nombre au sommet de la pile
C'est totalement compact et absolument génial.
Ca existe depuis 1969 et j'ai l'impression d'avoir raté un pan entier de l'informatique en ne m'y intéressant pas avant