2016-05-21 4 views
0

のような整数nがあります。私がしなければならないことは、数字を[1、3、0]に分割し、[1、3、0]のそれぞれの数字を読みやすいフォーマット["one"、 "three"、 "zero" 。これまで私がこれまで行ってきたことは次のとおりです。整数を単語のリストに変換する

digitToWord :: Int -> String 
digitToWord n = 
    case n of 
    1 -> "one" 
    2 -> "two" 
    3 -> "three" 
    4 -> "four" 
    5 -> "five" 
    6 -> "six" 
    7 -> "seven" 
    8 -> "eight" 
    9 -> "nine" 
    0 -> "zero" 

上記のコードは、整数をとり、読みやすいものを返します。

digits :: Int -> [Int] 
digits = map digitToInt . show 

このコードは、結果は[1, 3, 0]であろうように、130等番号を取得し、そのリスト内の各桁を置きます。

今私がしなければならないことは、[1、3、0]を["one"、 "three"、 "zero"]に変換することです。これはどうすればいいですか?

答えて

2

自分のマシンでコンパイルするためにコードを少し修正しました。 digitToIntの定義を投稿していないので、私はdigitToWordを直接使用しました(おそらく名前は変更されるはずです。

digitToWord :: Char -> String 
digitToWord n = 
    case n of 
    '1' -> "one" 
    '2' -> "two" 
    '3' -> "three" 
    '4' -> "four" 
    '5' -> "five" 
    '6' -> "six" 
    '7' -> "seven" 
    '8' -> "eight" 
    '9' -> "nine" 
    '0' -> "zero" 

digits :: Int -> [String] 
digits xs = map digitToWord (show xs) 

すでにIntのリストを持っている場合は、単に map digitToWord (digits 130)

+0

digitToWordのあなたの定義を使用 'digitToInt'がData.Charモジュールからです。 – Poriferous

関連する問題