I'm trying to implement a recursive datatype using recursion-schemes
. I would like to be able to print it.
import Data.Functor.Foldable
data T1F a = Foo deriving Show
type T1 = Fix T1F
data T2 = Bar T1 deriving Show -- error here
Error message:
No instance for (Data.Functor.Classes.Show1 T1F)
arising from the first field of ‘Bar’ (type ‘T1’)
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (Show T2)
How do I make T1
derive Show
?
Show1
forT1F
. Writing instances ofShow1
by hand can be quite tedious. Fortunately thederiving-compat
package has got your back. – SpottedShow
for your datatype, look at the generated code by compiling with-ddump-deriv
, and then paste and adapt it. Not a fun task, though - much easier to use the TH helpers in the pkg! – Spotted