[Haskell-cafe] Deconstruction

haskell at kudling.de haskell at kudling.de
Sat Dec 26 03:58:44 EST 2009


Hi, 


while this works:





data Foo a = Foo a


unwrapFoo :: Foo a -> a
unwrapFoo (Foo x) = x




this:




{-# LANGUAGE ExistentialQuantification #-}



class BarLike a where
    doSomething :: a -> Double



data Bar = forall a. BarLike a => Bar a


unwrapBar :: Bar -> a
unwrapBar (Bar x) = x




gives me:





    Couldn't match expected type `a' against inferred type `a1'
      `a' is a rigid type variable bound by
          the type signature for `unwrapBar' at test.hs:8:20
      `a1' is a rigid type variable bound by
           the constructor `Bar' at test.hs:9:11
    In the expression: x
    In the definition of `unwrapBar': unwrapBar (Bar x) = x





How can i deconstruct the enclosed value of type a?


Thanks,
Lenny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091226/7f3e1e01/attachment.html


More information about the Haskell-Cafe mailing list