I think the missing bit is simply 

you need to add a deriving Typeable to your data Foo declaration

On Thu, Oct 2, 2014 at 2:52 PM, José Pedro Magalhães <dreixel@gmail.com> wrote:
Hello Mike,

Typeable is essentially monomorphic, so I don't think you can use mkT with a polymorphic function...


Cheers,
Pedro

On Thu, Oct 2, 2014 at 2:17 PM, Michael Sperber <sperber@deinprogramm.de> wrote:

I'm a casual Haskell user, and am trying to use scrap-your-boilerplate
to write a transformation - and failing.  The rub is that the base
function is polymorphic, boiling down to this:

data Foo a = Foo a

bar :: Foo a -> Foo a
bar x = x

Now, I'm trying to use SYB like so:

foo :: Typeable a => a -> a
foo = mkT bar

... but I get:

    Could not deduce (Typeable a0) arising from a use of ‘mkT’
    from the context (Typeable a)
      bound by the type signature for foo :: Typeable a => a -> a
      at foo.hs:...
    The type variable ‘a0’ is ambiguous
    Note: there are several potential instances:

Is there any way I could make this work?

Any help would be much appreciated!

--
Regards,
Mike

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe