First of all, you don't need returns since this isn't a monadic/IO action. Second, what is the expected type of this? Clearly a is an Int and v is a Wam, right? But what's the return type. If you correct the return issue, you get something like deref a c = let ... in if tag=="REF" && value/=a then deref value c else a c but 'a c' doesn't make any sense. you can't apply a Wam to an Int. maybe you mean 'else (a,c)' or something like that. -- Hal Daume III | hdaume@isi.edu "Arrest this man, he talks in maths." | www.isi.edu/~hdaume On Mon, 19 May 2003 l14881@alunos.uevora.pt wrote:
data Wam = Wam { falha::String, h::Int, s::Int, p::Int, heap::Array Int Pares, registos::Array Int Pares, e::Int, b::Int, mode::Char, cp::Int, code::Array Int Int, trail::Array Int Int, tr::Int, hb::Int } deriving Show
deref a c = let (tag,value) = ((heap c)!(a)) in if ((tag=="REF") && (value /= a)) then return deref value c else return a c
I would like to do something like that but it gives me an error.
error:
ERROR "trab2.hs":373 - Type error in function binding *** Term : deref *** Type : Int -> Wam -> Int *** Does not match : Wam -> Int
Can anyone help, please?? thanks
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell