2007.6.3新規公開)ちょー遅ればせながら、FizzBuzz問題について考えてみる。Rubyだと、考えるの一瞬、あとはタイピングの時間だけなので、つまらない。Haskellで考えてみよう。Program?1から100までの数をプリントするプログラムを書け。3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。いう風に考えてみた;1から100まで、ということは、まずリストを用意してみよう。置きかえればいいんじゃないかな。あとは置き換え後のリストを連結すればいいだろう。リストの各要素を変換するところはmapが使えそうだ。文字列のリストを連結して一つにまとめるのはunwordsかな。コンパイル時の警告が出ないように修正。[1..100]ghcでコンパイルし、実行してみる。repl_num関数が冗長すぎる。タプルで設定を書いてみよう。その設定と置換対象の数値を受ける関数を書いてみる。xでもこれだけじゃ15(の倍数)のときに困るなぁ。Fizzに置換した場合でもBuzzを足すかどうか判定しないといけない、最後にFizzにもBuzzにもしなかった分だけ数値(を文字列にしたもの)を足すと。buzzタプルをリストにして、変換対象のリストの各値について設定リストを順に見ていけばよさそうだ。[1..100]動いているけど、どうもゴチャゴチャしてる。