Kötü başlık için özür dilerim. Functor örneğini tanımlamaya çalıştığım sorunlu bir veri türüm var.Haskell: bu veri türünden functor?
Yani temelde, bende ne
sample_logp :: s a -> a
olan bir şey, ve bu
sample_logp :: s b -> b
için
(a -> b)
kullanılarak dönüştürülmesi gerektiğini. Aşağıdaki kod bunu tam olarak gerçekleştirmez ve yalnızca
'da başarılı olur.
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
Mümkün olanı deniyor muyum? Öyleyse, bu kod bunu başarmak için nasıl güncellenebilir?
Bir functor olamaz: 'a' hem kovaryant hem de kontravaryant pozisyondadır. – zakyggaps
Teşekkür ederiz! Bu durumda, bunu başarabilecek başka tip sınıf var mı? – tero
[Profunctor] 'ı (http://hackage.haskell.org/package/profunctors-5.2/docs/Data-Profunctor.html) kontrol edebilirsiniz, ancak tasarım seçimi, 's' nin ne olduğuna bağlıdır. – zakyggaps