私は、定量化された制約の導出と一緒に、trival ケースのファンクターをぶら下げずに、このブログ投稿のアプローチをより高度なデータに使用しようとしています。Identity
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE QuantifiedConstraints, StandaloneDeriving, UndecidableInstances #-}
module HKD2 where
import Control.Monad.Identity
type family HKD f a where
HKD Identity a = a
HKD f a = f a
data Result f = MkResult
{ foo :: HKD f Int
, bar :: HKD f Bool
}
deriving instance (forall a. Show a => Show (HKD f a)) => Show (Result f)
これにより、腹立たしい自己矛盾するエラー メッセージが表示されます。
Show (HKD f a)
コンテキストから推測できませんでした:forall a. Show a => Show (HKD f a)
それについて長々と話さずにこれを行う方法はありますか
deriving instance (Show (HKD f Int), Show (HKD f Bool)) => Show (Result f)
?