2010-07-16 12 views
17

Chỉ cần tự hỏi làm thế nào để có được giá trị ascii của nhân vật trong haskell? Tôi đã cố gắng để sử dụng chức năng 'ord' trong ghci, dựa trên những gì tôi đọc ở đây:Làm thế nào để có được giá trị ascii của nhân vật trong haskell?

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> 

am i làm gì sai?

+3

': mô-đun + Dữ liệu.Char' (trong GHCi) hoặc' nhập dữ liệu.Char' (trong tệp nguồn của bạn). –

+1

@Travis Nâu: Bạn có thể làm 'Data.Char' nhập khẩu ghci quá – newacct

+0

@newacct: Cool-Tôi không biết điều đó. 'đủ điều kiện' & c. không làm việc, mặc dù, rõ ràng. –

Trả lời

17

Như Travis Brown chỉ trong một chú thích, bạn phải nhập ord chức năng từ các module Data.Char:

import Data.Char (ord) 

main = print (ord 'a') 

Chỉ module Prelude được nạp theo mặc định, tất cả các module khác đều phải nhập khẩu một cách rõ ràng.

+0

Đây có phải là thứ ghci không? Hay tôi phải nhập các loại mô-đun này khi tôi đang tạo các tệp .hs? – Chris

+1

@Chris: Chỉ những nội dung được xác định trong 'Prelude' được nhập theo mặc định, đối với các mô-đun khác, bạn phải chỉ định nhập bổ sung. – sth

+0

Cảm ơn rất nhiều! – Chris

10

Bạn cũng có thể sử dụng fromEnum. (Quy định tại Enum lớp, từ 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' 
... 

Vì vậy, bạn có thể sử dụng fromEnumtoEnum, trong đó sử dụng mã ASCII như giá trị Int.

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

Có lý do gì * không * để sử dụng điều này không? – YoYoYonnY

+1

Ba giờ cách đây trên một câu trả lời '13 ... Chúng ta đang học tập cho kỳ thi cùng LOL – lol

+1

@lol Incredibly bạn có kỳ thi trên Haskell? Bạn học đại học nào (Nếu bạn muốn ai đó thấy bình luận của bạn, có lẽ bạn nên sử dụng "@") – RnMss