Подтвердить что ты не робот

Как получить значение 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>

Что я делаю неправильно?

4b9b3361

Ответ 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'