[Help!] Haskell

Tens de usar transformadores de monads para combinar as monads de estado e as monads de IO. Se não sabes o que isso é, tens de estudar porque também não te sei explicar.
 
Última edição:
1 faz a funçao a moda nao monadica

assim:
push :: Int -> Mem -> Mem
push x (Mem s h) = Mem (x:s) h

agora pra fazer á la monad wway fazes

pushST :: Int -> MemST
pushST x = get >>= put.push x
 
1 faz a funçao a moda nao monadica

assim:
push :: Int -> Mem -> Mem
push x (Mem s h) = Mem (x:s) h

agora pra fazer á la monad wway fazes

pushST :: Int -> MemST
pushST x = get >>= put.push x


obrigado fork... vou tentar fazer o resto... se puder ajudar em algo diz...

inté
 
Em relação ás instancias da classe Read, pelo menos no meu código n funcionam.
Se com o código que puseram em cima fizerem por exemplo... um read (show (Const 4)) funciona ?
 
tarde e a más horas

*Main> read("1+2") :: Exp Ops
(1+2)
icon10.gif


tens k fazer cast...
o meu grande problema é a leitura do tipo de dados Prog...
icon14.gif

alg sabe cmo resolver erros de parse ambiguo sem recorrer a ferramentas externas ao haskell?
p.e.
*Main> read("-") :: Ops
*** Exception: Prelude.read: ambiguous parse

acrescentei ao data Ops = Add | Mul | Sim | Sub .. o símbolo é igual .. -.-
 
*Main> read("1+2") :: Exp Ops
(1+2)
icon10.gif


tens k fazer cast...
o meu grande problema é a leitura do tipo de dados Prog...
icon14.gif

alg sabe cmo resolver erros de parse ambiguo sem recorrer a ferramentas externas ao haskell?
p.e.
*Main> read("-") :: Ops
*** Exception: Prelude.read: ambiguous parse

acrescentei ao data Ops = Add | Mul | Sim | Sub .. o símbolo é igual .. -.-

Remove o Sub, tas a defenir 2 operaçoes qom o mesmo sinal., assim nao da.

Para fazeres subtracçoes somas um nº comn o simetrico de outro
 
ya nem m tinhas lembrado dessa. de qq maneira continuo com a read a dar erros de ambiguidade ..

eu tenho a read a ler por listas de compreensao e qd leio :
*Main> read("2") :: Exp Ops
*** Exception: Prelude.read: ambiguous parse
*Main> read("a2") :: Exp Ops
*** Exception: Prelude.read: ambiguous parse

tenho qq coisa como isto :
ler x = [(Const i,y) | (i,y) <- reads x] ++ [(Var v,y) | (v,y) <- lex x, isAlpha $ head v]

percebe-se bem o pkê de estar ambiguo.. ag daí a resolver a ambiguidade vai um gd passo..
 
para leres teras k fazer read (Const 2) :: Exp Ops .. i n show de read cmo tem aí postado em cima.

n precisas obrigatoriamente de usar as listas por compreensao .. podes construir a lista por recursividade.. eu só uso as funcoes reads e lex
 
Back
Topo