Is it possible to use something instead extractA function here? For example, substitute "extractA u” with “undefined :: a”?
GHC disallows it, so is there a way to explain that I only need a token with type a?
It needs a function type there. That said, `const undefined' might work, or even just `undefined', if it can infer the type correctly.
I don't *think* you can use 'a' as a type there meaningfully; IIRC it doesn't scope over the method definition, so `a' would be referring to a new type, not the one in the instance header. The ScopedTypeVariables extension would help, along with InstanceSigs so you can specify a signature for `show` with a `forall' in it to activate the scope. See the example at https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/type-class-extensions.html#instance-sigs for how to do it.