Forth で無名再帰

そう言えば Forth でも無名ワードの再帰ができる。

\ ほとんど階乗だけど 0 で 0 になる無名ワード
:noname
  dup 2 >= if
    dup 1- recurse *
  then
;    
10 swap execute .
\ -> 3628800 
\ ローカルな変数を使いたい場合
:noname
  { n }
  n 2 < if
    n
  else
    n n 1- recurse *
  then
;
10 swap execute .
\ -> 3628800 

あれ、Gforth ではうまく動いたのに pForth では動かないな。
追記:うわ、Forth で無名関数の再帰 - letter と思いっきりかぶってるやん。