SORU
1 Temmuz 2014, Salı


't ilgili bir monad transformer (IO hariç) yok böyle bir monad var mı?

Şimdiye kadar karşılaştığım her monad (bir veri türü olarak gösterilebilir) ilgili monad bir trafo vardı, ya da biri olabilir. Olabilir mi böyle bir monad var mı? Yatüm monadlar ilgili bir trafo var mı?

Bir tarafındant ilgili m monad için trafot Identity m dönmesidir. Ve monad transformer kurallarını karşılayan ve t n herhangi bir monad monad olduğunu elbette 5**.

Her monad ya da bir (kanıt) yok belirli bir monad bir örnek vardır, bu da bir kanıt görmek istiyorum (ideal bir yapıcı bir). Haskell odaklı cevap olarak (kategori) teorik olanlar hem daha çok ilgileniyorum.

Bir takip soru üzerine, iki ayrı transformatörleri t1 t2 olan bir monad m var mı? Bu, t1 Identity m t2 Identity ve izomorfik ama t1 n n t2 n izomorfik olmayan bir monad yoktur.

(IO ST dikkate al ve onları tamamen göz ardı etmesine izin vermem çok özel bir mantığı vardır. Sadece "saf" inşa edilebilir monadlar veri türleri kullanarak.) odaklanalım

CEVAP
19 Temmuz 2014, CUMARTESİ


@Bu Rhymoid katılıyorum, tüm Monadlar iki inanıyorum (!!) transformers. Benim yapım biraz farklı, ve çok daha tamamlandı. Bir kanıt bu çizim yapabilmek isterdim, ama sezgi ve beceri kaçırıyorum ya da çok ilgili olduğunu düşünüyorum.

Nedeniyle Kelisli, her monad (m) çürümüş iki funktor F_k G_k F_k sol eşlenik için G_k m izomorfik G_k * F_k (* functor kompozisyon). Ayrıca, adjunction nedeniyle, F_k * G_k bir comonad oluşturur.

t_mk t_mk n = G_k * n * F_k monad bir trafo gibi tanımlanmış iddia ediyorum. Açıkça, t_mk Id = G_k * Id * F_k = G_k * F_k = m. Tanımlama return Bu functor zor değil beri F_k bir "işaret" functor ve tanımlama join olması mümkün beri extract comonad F_k * G_k kullanılabilir azaltmak için değerleri yazın (t_mk n * t_mk n) a = (G_k * n * F_k * G_k * n * F_k) a değer türü G_k * n * n * F_k daha sonra daha da azaltır) join n.

Biraz F_k beri dikkatli olmamız gerekiyor ve G_k Hask üzerinde endofunctors değildir. Yani Functor standart typeclass örneklerini değil, aynı zamanda yukarıda gösterildiği gibi n ile doğrudan birleştirilebilir. Biz bunun yerine "" 42* *kompozisyon önce Kleisli kategori içine, ama m return bunu sağlar inanıyorum"". projeksiyon proje

İnanıyorum ki sen-ebilmek da yapmak bu Eilenberg-Moore monad bozunma veren m = G_em * F_em, tm_em n = G_em * n * F_em ve benzer yapılar için lift, return join ile benzer bir bağımlılık extract comonad F_em * G_em.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006