悪いタイトルについて申し訳ありません。問題のあるデータ型がありますが、これはファンクタのインスタンスとして定義しようとしています。ハスケル:このデータ型のファンクタ?
だから基本的に、私が持っているもの
sample_logp :: s a -> a
を持っているものであり、そしてそれは
sample_logp :: s b -> b
に
(a -> b)
を使用して変換する必要があります。次のコードはこれを達成していません。
sample_logp :: s a -> b
でのみ成功します。
data Model s a = Model {
sample_logp :: s a -> a
}
instance Functor (Model s) where
fmap f m = Model {
sample_logp = sample_logp'
} where sample_logp' x = (f . (sample_logp m)) x
私も可能なことは何ですか?もしそうなら、これを達成するためにこのコードをどのように更新できますか?
ファンクタにすることはできません。「a」は共変および反変の両方の位置にあります。 – zakyggaps
ありがとうございました!その場合、これを実現する他の型クラスがありますか? – tero
あなたは[Profunctor](http://hackage.haskell.org/package/profunctors-5.2/docs/Data-Profunctor.html)にチェックを入れることができますが、デザインの選択は 's'が何であるかによって大きく異なります。 – zakyggaps