Как получить значение ascii персонажа в haskell?
Просто интересно, как получить значение ascii персонажа в haskell?
Я попытался использовать функцию "ord" в ghci, основываясь на том, что я читаю здесь:
http://haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Char.html#6
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>
Что я делаю неправильно?
Ответы
Ответ 1
Как Travis Brown, указанный в комментарии, вам нужно импортировать функцию ord
из модуля Data.Char
:
import Data.Char (ord)
main = print (ord 'a')
По умолчанию загружается только модуль Prelude
, все остальные модули должны быть явно импортированы.
Ответ 2
Вы также можете использовать fromEnum
. (определяется в классе Enum
, из Prelude.)
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
, который использует код ASCII как значение Int.
Prelude> fromEnum 'A'
65
Prelude> fromEnum 'a'
97
Prelude> toEnum 9 :: Char
'\t'
Prelude> toEnum 100 :: Char
'd'