2014-10-02 10 views
5

SF zaten bir yerde tanımlanmış mı, yoksa en azından bir adı var mı?`Const` ve bir functor ürünü için bir isim?

type SF a f = (,) a :. f 

functor-combo gösterimi kullanılarak gibi

data SF a f x = SF a (f x) 

instance Functor f => Functor (SF a f) where 
    fmap g (SF a fx) = SF a (fmap g fx) 
+0

Başka bir functor içeren bir functor ilan ettiğinize benziyor. –

+0

AFAIK zaten orada bir tane yok, ama bu hiç kullanmadığım bazı rastgele paketlerin köşesinde bulunmadığı anlamına gelmiyor. – bheklilr

+0

@ Kod-Çırak, bir functor trafo tanımlıyorum. SF f f, funger 'f' ile aynıdır, ancak buna ekli bir“ a ”tipi ek bir değer taşır. – Artyom

cevap

4

Kişisel funktoru görünüyor.

(Ben her nasılsa kompozisyonu kullanılarak yerine ürünü ve Const kullanarak bakmayı tercih.)

+2

': .' için' main 'bir isim daha' transformatör 'paketinden 'Compose'. –

1

sadece tanımlayabiliriz funktor ürünleri

data (f :* g) a = P (f a) (g a) deriving Functor 

ve sonra doğrudan

type SF a f = Const a :* f 
yazmak
İlgili konular