• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

xenix

Funções ord e chr: Inexistentes no prelude

2 mensagens neste tópico

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  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora