Как получить значение ASCII символа в Haskell? - PullRequest
22 голосов
/ 16 июля 2010

Как получить значение ASCII символа в Haskell?Я пытался использовать функцию ord в GHCi, основываясь на том, что я прочитал здесь ошибка сообщения об ошибке:

Не в области действия: `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>

Что я делаю не так?

Ответы [ 2 ]

25 голосов
/ 16 июля 2010

Как указано Travis Brown в комментарии, вам необходимо импортировать функцию ord из модуля Data.Char:

import Data.Char (ord)

main = print (ord 'a')

По умолчанию загружен только модуль Prelude, все остальные модули необходимо импортировать явно.

12 голосов
/ 08 июля 2013

Вы также можете использовать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...