如何在Haskell中获取字符的ASCII值?

时间:2010-07-16 01:05:22

标签: haskell ascii

如何在Haskell中获取字符的ASCII值?我试图在GHCi中使用ord函数,根据我读到的here错误消息:

  

不在范围内:`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 个答案:

答案 0 :(得分:25)

在评论中指出Travis Brown,您必须从模块Data.Char导入ord函数:

import Data.Char (ord)

main = print (ord 'a')

默认情况下只加载Prelude模块,所有其他模块都必须明确导入。

答案 1 :(得分:12)

您也可以使用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'
...

因此,您可以使用fromEnumtoEnum,它使用ASCII代码作为Int值。

Prelude> fromEnum 'A'
65
Prelude> fromEnum 'a'
97
Prelude> toEnum 9 :: Char
'\t'
Prelude> toEnum 100 :: Char
'd'