Haskellで文字のASCII値を取得する方法は?私が読んだものに基づいて、GHCiでord
関数を使用しようとしました ここ =エラーメッセージのバグ:
範囲外:「ord」
例えば:
GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> ord 'a'
<interactive>:1:0: Not in scope: `ord'
Prelude>
私は何が間違っているのですか?
Travis Brown コメントに示されているように、モジュールからord
関数をインポートする必要があります Data.Char
:
import Data.Char (ord)
main = print (ord 'a')
デフォルトでは Prelude
モジュールのみがロードされ、他のすべてのモジュールは明示的にインポートする必要があります。
fromEnum
を使用することもできます。 (プレリュードのEnum
クラスで定義されています。)
Prelude> :i Char
data Char = GHC.Types.C# GHC.Prim.Char# -- Defined in `GHC.Types'
instance Enum Char -- Defined in `GHC.Enum'
instance Eq Char -- Defined in `GHC.Classes'
...
したがって、fromEnum
とtoEnum
を使用できます。これは、Int値としてASCIIコードを使用します。
Prelude> fromEnum 'A'
65
Prelude> fromEnum 'a'
97
Prelude> toEnum 9 :: Char
'\t'
Prelude> toEnum 100 :: Char
'd'