只是想知道如何在haskell中获得字符的ascii值?我试图在ghci中使用'ord'函数,基于我在这里阅读的内容:
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>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
sth*_*sth 26
正如Travis Brown在评论中指出的那样,您必须ord从模块中导入该函数Data.Char:
import Data.Char (ord)
main = print (ord 'a')
Run Code Online (Sandbox Code Playgroud)
Prelude默认情况下仅加载模块,必须显式导入所有其他模块.
RnM*_*Mss 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'
...
Run Code Online (Sandbox Code Playgroud)
所以你可以使用fromEnum和toEnum,它使用ASCII码作为Int值.
Prelude> fromEnum 'A'
65
Prelude> fromEnum 'a'
97
Prelude> toEnum 9 :: Char
'\t'
Prelude> toEnum 100 :: Char
'd'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20322 次 |
| 最近记录: |