Sequence 霍夫斯塔特的男女序列

Sequence 霍夫斯塔特的男女序列,sequence,forth,Sequence,Forth,我试图写一个in-Forth,不使用递归。我觉得我很接近,但我不断地得到一个错误告诉我 TypeError:x[m[w]]不是函数 当我用10个男性运行它时。如何修复此错误 我的代码如下: VARIABLE SIZE VARIABLE MALE-ARR VARIABLE FEMALE-ARR : MALE DUP SIZE ! CREATE MALE-ARR SIZE @ CELLS ALLOT \ CREATE MALE ARRAY OF LENGTH N CREAT

我试图写一个in-Forth,不使用递归。我觉得我很接近,但我不断地得到一个错误告诉我

TypeError:x[m[w]]不是函数

当我用
10个男性运行它时
。如何修复此错误

我的代码如下:

VARIABLE SIZE
VARIABLE MALE-ARR
VARIABLE FEMALE-ARR

: MALE
    DUP SIZE !
    CREATE MALE-ARR SIZE @ CELLS ALLOT \ CREATE MALE ARRAY OF LENGTH N
    CREATE FEMALE-ARR SIZE @ CELLS ALLOT \ CREATE FEMALE ARRAY OF LENGTH N
    0 MALE-ARR ! \ MALE-ARR(0) = 0
    1 FEMALE-ARR ! \ FEMALE-ARR(0) = 1
    SIZE @ 1 DO
        i FEMALE-ARR MALE-ARR i 1- CELLS + @ CELLS + @ - MALE-ARR i CELLS + !
        i MALE-ARR FEMALE-ARR i 1- CELLS + @ CELLS + @ - FEMALE-ARR i CELLS + !
    LOOP
    SIZE @ 0 DO
        MALE-ARR i CELLS + @ .
    LOOP
    ; 

也许是这样的

: array ( u "name" -- )   create cells allot  does> swap cells + ;

10 constant size
size array male
size array female

: compute ( -- )   0 0 male !  1 0 female !                                     
   size 1 do                                                                    
      i i 1- female @ male @ - i female !                                       
      i i 1- male @ female @ - i male !                                         
   loop ;

: print ( u -- )   0 do i male @ . loop ;

你用的是什么?此外,代码中的创建项显然是混淆的。当运行MALE时,它们将解析一个名称,但您不提供这样的名称。