project euler problem 17
組み合わせの問題なので内包表記が大活躍する。
concatMapの方が読みやすいかもしれない。
main = print $ length $ concat one2thousand one2nine = ["one","two","three","four","five","six","seven","eight","nine"] zero2nine = "":one2nine ten2nineteen = ["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"] twenty2ninety = ["twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"] one2ninetynine = one2nine ++ ten2nineteen ++ [x++y|x<-twenty2ninety,y<-"":one2nine] onehundred2ninehundred = [x++"hundred"++y|x<-one2nine,y<-"":["and"++z|z<-one2ninetynine]] one2thousand = one2ninetynine++onehundred2ninehundred++["one"++"thousand"]