2010-07-16 23 views
17

¿Preguntándome cómo obtener el valor ascii del personaje en haskell? He intentado utilizar la función 'ord' en ghci, basado en lo que he leído aquí:¿Cómo obtener el valor ascii del personaje en 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> 

¿Qué estoy haciendo mal?

+3

': module + Data.Char' (en GHCi) o' import Data.Char' (en su archivo fuente). –

+1

@Travis Brown: puede hacer 'import Data.Char' en ghci también – newacct

+0

@newacct: Cool-No lo sabía. 'calificado' & c. no funciona, sin embargo, al parecer. –

Respuesta

17

Como Travis Brown se indica en un comentario, usted tiene que importar la función del módulo ordData.Char:

import Data.Char (ord) 

main = print (ord 'a') 

Sólo el módulo Prelude se carga por defecto, todos los demás módulos tienen que ser importados de forma explícita.

+0

¿Esto solo es algo de ghci? ¿O tengo que importar este tipo de módulos cuando también estoy haciendo archivos .hs? – Chris

+1

@Chris: solo las cosas definidas en 'Preludio' se importan por defecto, para otros módulos debe especificar importaciones adicionales. – sth

+0

¡Muchísimas gracias! – Chris

10

También puede usar fromEnum. (Definido en la clase Enum, desde Preludio.)

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' 
... 

esta manera puede utilizar fromEnum y toEnum, que utiliza el código ASCII como el valor Int.

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

¿Hay alguna razón * no * para usar esto? – YoYoYonnY

+1

Hace tres horas en una respuesta de '13 ... estamos estudiando para el mismo examen LOL – lol

+1

@lol. ¿Es increíble que tenga exámenes en Haskell? ¿En qué universidad estás? (Si quieres que alguien vea tu comentario, probablemente deberías usar "@") – RnMss

Cuestiones relacionadas