let rec

たまに「再帰関数をプリミティブとして実装するには、Schemeのset!やMLのreferenceのような、破壊的代入が必要である」という誤解があります。

自分のこといわれたんじゃないかと思うと、夜も眠れない。恥を承知で自己弁護すると、破壊的代入が”必須”と思ってたわけじゃないんですけど、同一物を参照するための何らかの機構が必要だよね、例えば reference 、位の意味で書きました。というか、はい、間違いです。ゴメンナサイ。
なんというか、グラフを作るのには、pointer 使うか、hash 使うよねという話に通じるモノがある、気がしました。全然たいした話じゃないんですけど。