本当はRound 2は観戦にしておこうと思っていたのだけれど、 http://idm.s9.xrea.com/ratio/2006/07/12/000484.html を見て、なにか挑戦された気がしたので、結局書いた。 何を挑戦された気がしたかというと、「問題を読み替えないで実装するためには、副作用が必須だ」という主張(というように私は理解したのだけど、間違っていたらごめん)。だから、純粋関数型だと読み替えないで実装するのは難しいのじゃない?(意訳)というような内容をみて、「これは挑戦に違いない」と勝手に思い込んだのでした。 - まずは、Collatz予想の1ステップ分の関数定義。これはシンプルに。 f 1 = 1 f n | isEven n = n/2 = 3*n + 1さて、これをどうすれば言いかというと、Cleanには(そしてHaskellにも)、与えられた関数を何度も適用しながら