Boa tarde, pessoal!
Estou tentando seguir um tutorial sobre Haskell para ver como funciona esse ambiente.
Se alguém puder me dar uma ajuda, tipo:
tenho o modulo de um TAD num arquivo e sua utilização é realizada em outro arquivo.
[code]
–TAD Pilha Exportacao Explicita,as operações listadas estaram visiveis
module Pilha(Pilha,vazia,pop,top,push,ehvazia)where
data Pilha a = Pvazia|P1 (a,Pilha,a)
deriving(Show)
top :: Pilha a -> a
top Pvazia = error "pilha vazia"
top (P1(a,p)) = a
pop :: Pilha a -> Pilha a
pop Pvaiza = error "pilha vazia"
pop (P1(a,p)) = p
push :: (a,Pilha,a) -> Pilha a
push (a,p) = P1(a,p)
ehvazia :: Pilha a -> Bool
ehvazia Pvazia = True
ehvazia _ = False
vazia :: () -> Pilha a
vazia() = Pvazia[/code]
Utilização do TAD:
[code]module UsaPilhas where
import Pilha
–lineariza pilha
lineariza :: Pilha a -> [a]
lineariza p
| ehvazia§ = []
| otherwise = top§:lineariza(pop§)[/code]
tutorial completo: http://www.mat.uc.pt/~pedro/lectivos/ProgramacaoFuncional/apontamentosHaskellcap6.pdf
O nome do arquivo deve ser o mesmo nome do modulo, isto tem alguma coisa haver ???
Este tipo de teste pode ser realizado no Interpretador Haskell GHCi ou tem que ser compilado no GHC???
Para executa-lo é somente entrar com o nome do módulo no interpretador ?
fazendo desta forma o seguinte erro está ocorrendo:
Prelude> UsaPilhas
<interactive>:1:0: Not in scope: data constructor `UsaPilhas'
Prelude>
O que pode ser ???
:?:
Vlws!!!
:idea: