1. ホーム
  2. haskell

[解決済み] haskellでCharからIntに変換する

2022-02-24 10:20:13

質問

文字列(数字)を個々の数字に変換しようとしています。これを解決する方法は複数あり、その1つは map digitToInt "1234"

似たような方法を試していたのですが、その代わりに digitToInt を使おうとしていました。 read::Char->Int 関数を使用します。しかし、私は上記のように使用すると、コンパイルエラーが発生します。

map (read::Char->Int) ['1','2']

を実行すると、以下のようなエラーが発生します。私はCharを取る関数をCharのリストにマッピングしようとしているのですが、何が間違っているのでしょうか?

他の方法がいくつかあることは理解しているので、代替の方法を教えないでください。ただ、ここで何が起こっているのかを理解したいだけなのです。

Couldn't match type ‘Char’ with ‘[Char]’
      Expected type: Char -> Int
        Actual type: String -> Int
    • In the first argument of ‘map’, namely ‘(read :: Char -> Int)’

解決方法は?

問題点は read :: Read a => String -> a . そこで read を適用する必要があります。 String でなく Char . 代わりにこれを試してみてください。

 map (read :: String -> Int) ["1", "2"]
 -- or
 map read ["1", "2"] :: [Int] -- same but clearer?