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/