Jump to content

Funções ord e chr: Inexistentes no prelude


xenix

Recommended Posts

Boas!

Eu abri este post inicialmente para tirar uma dúvida, mas entretanto descobri  a solução.

Como deve haver mais gente com a mesma dúvida vou escrever a solução:

Imaginem que querem fazer uma função 'f' que recebe um caracter e devolve a posição do mesmo na tavela ascii, estando essa função num ficheiro.

module Programa where

f :: Char -> Int
f c = ord c

Ao compilarem este ficheiro, o compilador vai dizer-vos que a função ord "is not in scope", ou seja não existe no prelude.

Esta função (ord) apenas existe na biblioteca Data.Char

Para funcionar precisam fazer:

module Programa where
import Data.Char

f :: Char -> Int
f c = ord c

Se quiserem utilizar a função ord ou chr directamente na consola, basta primeiro usarem o comando:

:m Data.Char

'm' de module.

Pronto isto deve ser básico mas deve haver mais gente com a mesma dúvida, principalmente o resto do pessoal que faltou na semana passada a PF  🙂

Link to comment
Share on other sites

Muito bem!

Acrescento que quando tiverem algum dificuldade do género podem ir directamente a documentação da API ou então usar o Hoogle ou o Hayoo!

E ao pesquisar por ord fiquei a saber (e achei engraçado) que é equivalente a usar a função fromEnum. Ou seja, ao usar o fromEnum não precisam de referenciar nenhum módulo (para além do Prelude).

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.