On 26 Dec 2009, at 11:58, [email protected] wrote:
class BarLike a where
doSomething :: a -> Double
data Bar = forall a. BarLike a => Bar a
unwrapBar :: Bar -> a
unwrapBar (Bar x) = x
How can i deconstruct the enclosed value of type a?
You can't write a function with a type that mentions existentially
quantified "a". Period.
But you can deconstruct the enclosed value temporarily:
getSomething :: Bar -> Double
getSomething b =
case b of
Bar a -> doSomething a
Haskell-Cafe mailing list