http://www.iai.uni-bonn.de/~jv/mpc08.pdf - 在这篇文章中我无法理解以下声明:
instance TreeLike CTree where
...
abs :: CTree a -> Tree a
improve :: (forall m. TreeLike m => m a) -> Tree a
improve m = abs m
有什么区别(forall m. TreeLike m => ma)带来了(我认为 TreeLike m => ma 在这里就足够了)
为什么它在这里允许 abs,如果 m in ma 可以是任何 TreeLike,而不仅仅是 CTree?