DataRep зависит от Constr:
https://hackage.haskell.org/package/base-4.18.0.0/docs/src/Data.Data.html#DataType
Да и пример у них в доках явно же должен вызвать бесконечную рекурсию, которая и получается у меня в тестах:
data T a b = C1 a b | C2
instance (Data a, Data b) => Data (T a b) where
toConstr (C1 _ _) = con_C1
toConstr C2 = con_C2
dataTypeOf _ = ty_T
con_C1 = mkConstr ty_T "C1" [] Prefix
con_C2 = mkConstr ty_T "C2" [] Prefix
ty_T = mkDataType "Module.T" [con_C1, con_C2]
а откуда рекурсия
Обсуждают сегодня