Profunctorというライブラリに、以下の様なUpStarという型があります

https://hackage.haskell.org/package/profunctors-4.3.2/docs/Data-Profunctor.html#t:UpStar
https://github.com/ekmett/profunctors/blob/v4.3.2/src/Data/Profunctor.hs#L67

newtype UpStar f d c = UpStar { runUpStar :: d -> f c }

これは、標準ライブラリ(?)であるbaseのKleisliと同型だと思うのですが、わざわざこういうった場合に別のnewtypeを作るのはなにか理由があるのでしょうか?

http://hackage.haskell.org/package/base-4.7.0.2/docs/Control-Arrow.html#t:Kleisli

newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b }

個人的に思いつく予想を適当に挙げると
- 深い理由がなくても、簡単に型が作れるから、とりあえず作る
- 微妙に意味や使い方が違うので、Kleisli は使いたくなかった
- 既存のclassの継承関係や、存在しているインスタンスの影響で、直接使うと何らかの不都合が生じる
- 直接使わないほうが、version間の互換性などで有利?