Ответ 1
Здесь начинается как минимум:
\f z -> fmap (foldr f z) . sequenceA
== (definition of Foldable foldr)
\f z -> fmap (foldr f z . toList) . sequenceA
== (distributivity of fmap)
\f z -> fmap (foldr f z) . fmap toList . sequenceA
== (need to prove this step, but it seems intuitive to me)
\f z -> fmap (foldr f z) . sequenceA . toList
\f z -> foldr (liftA2 f) (pure z)
== (definition of Foldable foldr)
\f z -> foldr (liftA2 f) (pure z) . toList
Если вы можете доказать, что fmap toList . sequenceA = sequenceA . toList
и что ваше первоначальное требование имеет место для t = []
, вам должно быть хорошо идти.