あれ。作用的の場合は、「引数を評価し、(てから)作用する」ので、
まず0を評価→問題なし
次に(p)を評価(＝展開？)しようとして、(p)を再び得る→ループ
じゃなかったっけ？
(つまり、testの作用の前にループしちゃう)