21000の各桁の和を求める。
例) 215 = 32768 → 3+2+7+6+8 = 26
21000ともなるとかなり巨大な数になることが予想されるが、全く問題ない。だって僕達にはIntegerがあるんだから。
数字を桁ごとに分ける操作 breakToDigits がちょっとした小技かも知れない。これは Problem 8 で苦悶した経験が活きた。
breakToDigits に型変数を使っているのは、将来的にInt型をInteger型の両方を使うことになりそうだからだ。問題数もある程度進んできたので、繰り返し使う関数は今後モジュール化していきたいというのが念頭にある。
…とか言うてたら、実は Char -> Int 型の関数Data.Char.digitToIntを使うともっと簡単だと気付いた。意味のわからないreturnなど導入しなくても、map digitToInt で事足りる。今後はそうしようか。
Integer バンザイ☆