Snap!
abee2: ユーザーが定義したブロックに引数はありますが、返り値はありません(それなので、関数ではなくプロシージャ)。組込関数(両端の丸いレポーターブロック、尖ったブーリアンブロック)は返り値を持ちます。 「このスプライトのみ」の名前空間はそのスプライトなので、その中で同時に呼ぶと名前の衝突が起こります。これを回避する、つまり、リエントラントにするにはリストで管理するか、定義したブロックを呼び出す度にクローンを作る方法があります。「このスプライトのみ」はクローン毎にユニークです。
abee2: Scratchでは関数を定義できないので(ブロック定義で作れるのは返り値を持たないプロシージャ)、再帰ひとつ書くにしてもスタックを自分で管理しないといけません。ブロックは第一級オブジェクトではなく、λ式も作れません。