[email protected]
[Top] [All Lists]

[Haskell-cafe] Deconstruction

Subject: [Haskell-cafe] Deconstruction
From: ""
Date: Sat, 26 Dec 2009 09:58:44 +0100 CET

while this works:

data Foo a = Foo a

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


{-# 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?

Haskell-Cafe mailing list
[email protected]
<Prev in Thread] Current Thread [Next in Thread>