を実装反変ファンクタは、以下が真であることを型クラスの機能反転
import Control.Category (Category, (.), id)
data Invertible a b = Invertible (a -> b) (b -> a)
instance Category Invertible where
id = Invertible Prelude.id Prelude.id
(Invertible f f') . (Invertible g g') =
Invertible (f Prelude.. g) (g' Prelude.. f')
invert (Invertible x y) = Invertible y x
注以下の私が持っているとしましょう私の場合は
F(g . f) = F(f) . F(g)
、:それは同じ公理を次のようにcontravariant functor (wikipedia)、は単純にinvert
です。
私はData.Functor.Contravariant.contramapを見て、種類の機能を有している:
(a -> b) -> f b -> f a
をしかし、私は、私は私の状況でそれを実装したいhow'dを知りませんでした。たとえば、私はf
のための賢明な選択肢を働くことはできません、そして私の状況では、機能はありませんa -> b
、ちょうどinvert
。
しかし、invert
でも反例のあるファンクタの数学的公理に合っているので、これを既存のクラスに適合させることができると思っていますが、どのクラスとその方法を見つけることができません。どのような助けや指針をいただければ幸いです。
このブログの記事は面白いかもしれません:http://gelisam.blogspot.com/2013/07/the-commutative-monad.html –
私の謙虚な意見では、問題は、「逆さま」は反変的な内書人です'逆変態f 'は'ハス 'のカテゴリの反変的な内分泌者である。 –
@AaditMShah、それも私の推測でしたが、十分なカテゴリ理論が自信を持っているかどうかはわかりません。 – dfeuer