Pour comprendre ce que base-execute
devez-vous comprendre execute
et BASE
. Je vais aussi expliquer comment lire i*x
et j*x
dans l'effet de pile.
execute
fonctionne en prenant un jeton d'exécution xt
et en l'exécutant. ' 1+ execute
est le même que 1+
seul. La raison d'utiliser execute
, cependant, est que vous pouvez passer xt
sur la pile, au lieu de devoir le choisir à l'avance. Par exemple:
: exec-twice dup >r execute r> execute ;
2 ' 1+ exec-twice . (this outputs 4)
BASE
est une variable qui contrôle quelle base numérique à utiliser pour l'entrée et la sortie. BASE
est initialement 10. Donc 5 2 BASE ! .
sort 101
(qui est 5 dans la base 2).
base-execute
les met ensemble: il change BASE
-u
, exécute xt
, puis restaure BASE
à sa valeur précédente. Sa mise en œuvre pourrait ressembler à ceci:
: base-execute BASE @ >r BASE ! execute r> BASE ! ;
Voici un exemple d'utilisation:
: squared (n1 -- n2) dup * ;
: squares (n --) 0 do i squared . loop ;
10 squares (0 1 4 9 16 25 36 49 64 81)
: hex-execute (i*x xt -- j*x) 16 base-execute ;
10 ' squares hex-execute (0 1 4 9 10 19 24 31 40 51)
10 squares (0 1 ... 81 we're back to decimal)
maintenant pour i*x xt u -- j*x
:
La documentation de la notation de la pile vous avez lié a la plupart des informations que vous besoin de lire l'effet. i*x -- j*x
signifie que quelque chose peut arriver à la pile, mais il ne précise pas quoi. Dans ce cas, l'effet de pile exact dépend de ce qu'est xt
.
Pour connaître l'effet de la pile avec une donnée xt
, et remplacer i*x
j*x
des deux côtés de l'effet de la pile de xt
.
Par exemple, si xt
est ' .
, vous devriez regarder l'effet de pile .
, qui est n --
. Dans ce cas, vous pouvez penser à l'effet de pile de base-execute
en tant que n xt-of-. u --
.
Très instructif, mais il n'est pas clair à partir de ce qui précède comment * utiliser * base-execute'. La réponse serait améliorée par une utilisation d'échantillon de base ou deux. – agc
Bon point, je vais ajouter un exemple. –
Merci! Simplement 'base-execute' est amusant, c'est-à-dire:' 10 'carrés 3 base-execute' pour ternaire, '10' carrés 95 base-execute', pour être cryptique, etc. – agc