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

20_LESI

Dúvida

3 mensagens neste tópico

Boas! Tenho um trabalho para entregar amanhã, em pleno Enterro da gata (havia de ser crime), e ainda me falta uma cena para ter interface... Aqui vai a dúvida:

Tenho as definiçoes de tipos de dados:

data Def = Exp:=:Exp

deriving (Read,Eq)	



data Exp = Id

           | Exp:.:Exp    		--composiçao

   | Fst

   | Snd

   | Exp:/\:Exp   		--split

   | Exp:><:Exp    		--produto

	   | Func String

   | Num Int

deriving (Read, Eq)

e num ficheiro tenho 6 Def

no programa faço, por exemplo:

*Main> provar prova1

sendo que prova1 é o nome de uma das minhas 6 Def, e o programa resolve bem

o problema é que em tempo de execução e pedido ao util. para inserir o nome da prova e uso um getLine para guardar numa variavel:

opcao1 :: IO()
opcao1 = do  putStr "\nDigite o nome da definicao que deseja provar: "

             prova <- getLine
             ...

Acontece que essa variavel é uma string e depois ao fazer provar "nome da var."

o compilador diz que não pode fazer tal coisa por aquilo ser uma string e nem com um cast para Def ele lá vai.

Alguém me sabe dizer o que tenho de fazer? Já ouvi dizer k tenho de instanciar para a classe read, no entanto depois de tentarmos várias vezes decidimos desistir de fazer por aí...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bastava uma simples função de pattern matching, de String para Def...

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