Bir monad'sorun ne endofunctors kategorisinde sadece bir monoid?
İlk kim söyledi
Bir monad sadece bir monoid. bu ne endofunctors, kategori sorun?
ve bu doğrudur, daha az önemli bir not ve eğer öyleyse sana bir açıklama verebilir (çok haskell deneyimi olmayan biri tarafından anlaşılabilir umarım.
CEVAP
Özellikle cümle James İry, son derece eğlenceli onun tarafındanBrief, Incomplete and Mostly Wrong History of Programming Languageso fictionally Philip Wadler onu bağlıyor ki.
Orijinal alıntı Saunders Mac LaneÇalışma Matematikçi için kategorilerKategori temel metinlerin bir Teori. Muhtemelen en iyi yer ne anlama geldiğini tam olarak öğrenmek için Here it is in context,.
Ama, bir bıçak alacağım. Orijinal cümle şu:
Her şeyi anlattı, X bir monad ürün × endofunctors ve birim kimlik endofunctor tarafından belirlenen kompozisyon yerine X endofunctors kategorisinde sadece bir monoid.
Xburada bir kategori. Endofunctors kendisi için bir kategori funktorlar genelde. ( ^em>tümFunctor
çoğunlukla sadece tek bir kategori; tip kategori--ama sapmak) ile uğraştığından beri fonksiyonel programcılar gelince. Ama "endofunctors . kategori başka bir kategori düşünebiliriz ^em>X". Bu nesnelerin endofunctors ve morfizmaları doğal dönüşümler bir kategoridir.
Ve bu endofunctors, bazıları monadlar olabilir. Hangileri monadlar? Olanlar tam olarakmonoidalbelirli bir anlamda. Yerine dışarı yazım tam eşleme monadlar için monoids (beri Mac Lane yok, daha iyi olmayı umuyorum), ben sadece koyun kendi tanımları yan yana ve izin karşılaştırmak:
Bir monoid
- Bir diziS
- Bir operasyon• : S × S → S
- UnsuruS,e : 1 seçeneğine
...bu yasalar tatmin edici:
- (a • b) • c = a • (b • c)tüm içinbir,bvecS
- a = a = e e••tüm içinbirS
Bir monad
- Bir endofunctor,T : X → X(Haskell, bir tür
Functor
örneği ile tür* -> *
) kurucu - Doğal bir dönüşümM : T × T Seçeneğine Tnerede×functor kompozisyon olarak . anlamına gelir ^em>
join
içinde Haskell) - Doğal bir dönüşümthe : ben öğelerini TneredeBenkimliği endofunctorX(de bilinir
return
içinde Haskell)
...bu yasalar tatmin edici:
- µ ((T X T) µ × T)) = µ(T × m(T X))
- (the(T)) = T = µ(T(the)) mikron
Biraz şaşı olabilir muhtemelen gördüğünüz Her ikisi de bu tanımları örneklerinin aynı soyut kavramı (bence kategori teorisyenleri derdi "monoid" soyut terim ve benim tanımı "monoid" üzerinde fazla spesifik beri bahseder setleri ve elemanları).
UİCollectionViewCell bu Autoresizing s...
Yeniden düzenleme amaçlı sadece özelli...
Kategori, Monoid ve Monad göstermek iç...
Okuyucu Amaç Monad...
Yerli atlama olduğunda sadece gerçekle...