Saya ingin memahami Applicative
dalam hal teori kategori.
The dokumentasi untuk Applicative
mengatakan bahwa itu functor longgar monoidal kuat .
Pertama, Wikipedia halaman tentang functors monoidal mengatakan bahwa functor monoidal adalah baik longgar atau kuat . Jadi menurut saya salah satu sumber salah, atau mereka menggunakan istilah secara berbeda. Adakah yang bisa menjelaskannya?
Kedua, apa kategori monoid yang merupakan fungsi monoid Applicative
? Saya berasumsi bahwa functors adalah endo-functors pada kategori Haskell standar (objek = tipe, morfisme = fungsi), tetapi saya tidak tahu apa struktur monoid pada kategori ini.
Terimakasih atas bantuannya.
Functor
memiliki kekuatan (produk WRT), hanya karena mereka didefinisikan menggunakanfmap
di dalam bahasa? Juga, apa yang membingungkan saya bahwa definisi Anda tentang dan terbalik dibandingkan dengan posting blog Anda dan artikel Wikipedia - apakah ini salah ketik? Saya mencoba mendefinisikan menggunakan sebagai , yang jelas perlu .pure
i
pure' = \v -> fmap (\() -> v) (i ())
i :: (Applicative f) => () -> f ()
Functor
kuat (wrt produk).Untuk memahami Applicative, seperti yang diinduksi oleh monad, saya ingin menunjukkan konstruksi berikut:
Lemma Yoneda menyiratkan bahwa ada isomorfisme antara dan . Dalam kategori tipe Haskell, ini adalah pemetaan dari tipe Mengevaluasi , lalu menerapkan peta panah functors ke fungsi yang dihasilkan - jika komponen transformasi alami masuk akal sebagai panah - dan mengabstraksi lagi, kami memperoleh pemetaan tipe Sekarang jika functor datang dengan 'join' monadik, pemetaan dari keFA nat(Hom(A,B),FB)
sumber