Isso já tava definido no enunciado do trabalho lol
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
*Main> read("1+2") :: Exp Ops
(1+2)
tens k fazer cast...
o meu grande problema é a leitura do tipo de dados Prog...
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 .. -.-