次のように手動で記述した機能をコンパイラに導出させる方法はありますか。
instance Class c => Class (Trans c) where
foo1 = lift foo1
foo2 = lift foo2
...
foo999 = lift foo999
bar1 = \a b c -> lift $ bar1 a b c
...
baz1 = lift . baz1
...
つまり、あるタイプのクラスClass
がラップされている場合、手間のかかる作業を行わなくても、 forTrans
の無料インスタンスClass
をTrans
自動的に取得することは可能ですか :)?