Коллеги, в процессе освоения haskell написал вот такой образец кода:
data Object a = StillObject a | AgainObject Int
getVal :: Object a -> a
getVal (StillObject a) = a
getVal (AgainObject v) = v
ghc ругается:
Couldn't match expected type `a' against inferred type `Int'
`a' is a rigid type variable bound by
the type signature for `getVal' at ddd.hs:3:17
In the expression: v
In the definition of `getVal': getVal (AgainObject v) = v
Failed, modules loaded: none.
А вообще есть какой-нибудь легальный способ написать такую функцию getVal для обоих конструкторов?