# [Haskell-cafe] What are Kind errors and how do you fix them?

MR K P SCHUPKE k.schupke at imperial.ac.uk
Wed Mar 24 08:31:19 EST 2004

I dont understand what you are trying to do:

type ReverseType a string = (string ->(string,a))

takes a string an returns a string and another value (looks like the

data Reverse a string = Reverse (ReverseType a string)

this just declares a type wrapper... why have both of the above, you only
need:

data Reverse a s = Reverse (s -> (s,a))

return x = Reverse (\text -> (text,x))

this is the standard return from a state monad.

(Reverse p) >>= k = Reverse p3
where
p3 s0 = p2 s1
where
(Reverse p2) = k a
(s1,a)=p s0

the second parameter (k) needs the state passed as well
after unwrapping like:

p2 = (\(Reverse x) -> x) (k a) s1

Regards,
Keean.