Kategori-teorik çerçeveden faydalanan monadların doğal oluşumları


18

Bugün, Henning Kerstan'ın ("Olasılıksal Geçiş Sistemleri için İz Semantiği") yaptığı bir konuşma ilk kez kategori teorisi ile karşı karşıya geldi. Olasılıksal geçiş sistemlerini ve davranışlarını genel bir şekilde tanımlamak için teorik bir çerçeve oluşturmuştur, yani sayılamayan sonsuz devlet kümeleri ve farklı iz kavramları. Bu amaçla, nihayet ihtiyacı olan modeli oluşturmak için ölçü teorisi ile birleştirdiği monad kavramı ile sonuçlanmak üzere birkaç soyutlama katmanından geçer .

Sonunda, başlangıçta 5 dakika içinde açıkladığı bir kavramı tanımlamak için (kabaca) bir çerçeve oluşturması 45 dakika sürdü. Ben (bu yaklaşımın güzelliği takdir etmez izlerinin güzel farklı kavramları genelleme) ama yine de garip bir bakiye olarak beni oldukça etkiliyor.

Bir monadın gerçekte ne olduğunu ve bir kavramın uygulamalarda (hem teoride hem de pratikte) ne kadar genel olabileceğini görmek için mücadele ediyorum . Gerçekten çabaya değer mi, sonuç olarak?

Bu nedenle bu soru:

Monad'ların soyut kavramının uygulanabileceği ve istenen sonuçların elde edilmesine yardımcı olan (veya hiç olmadığı kadar güzel bir şekilde) doğal (CS anlamında) sorunlar var mı?


2
Durumları tamamen işlevsel bir programlama dilinde kodlama? Bu yeterince doğal bir CS sorunu mu?
Stéphane Gimenez

2
Fonksiyonel dillerde etkileri ele almanın daha genel sorunu, en çok gördüğüm örnektir: teori için, efektler için monadlar seksi ve uygulama için Haskell'in IO monad'ı çok kullanışlıdır.
jmad

Klasik, nispeten hafif semantiğe kıyasla avantajları ne olurdu? FP monadları kategori teorisindekiyle aynı mıdır? Sorular üzerine sorular.
Raphael

Kategori teorisini kullandıktan sonra daha genel bir soru için sstheory.SE'ye bakınız .
Raphael

Yanıtlar:


6

Monad oluşumunun olup olmadığını sorma doğal olup olmadığını sormak, bir grubun (grup teorisi anlamında) doğal olup olmadığını sormaya benzer. Bir şeyi resmileştirdiğinizde, bu durumda bir endofunctor olarak, ya bir monad olmanın aksiyomlarını tatmin eder ya da tatmin etmez. Aksiyomları tatmin ederse, o zaman bir sürü teknik makine ücretsizdir.

Moggi'nin kağıdı Hesaplama ve monad kavramları anlaşmayı hemen hemen mühürler: monadlar, hesaplama etkilerini birleşik bir şekilde tanımlamak için inanılmaz derecede doğal ve kullanışlıdır. bakınız, Wadlerve diğerleri bu kavramları fonksiyonel fonksiyon dillerinde hesaplama etkilerini ele almak için çeviricinin bir veri tipi kurucusu olduğu bağlantıyı kullanarak tercüme ettiler. Bu pastanın üzerine krema ekler. FP monadları, onlar olmadan son derece doğal olmayan IO gibi hesaplama etkilerinin tedavisine izin verir. Monadlar, fonksiyonel programları yapılandırmak için de çok yararlı olan oklar ve deyimler gibi ilgili yararlı kavramlara ilham verdiler. Referanslar için Wadler bağlantısına bakın. FP monadları kategori teorisi monad'ları ile aynı şeydir, çünkü bir FP monadının çalışması için aynı denklemlerin tutulması gerekir --- derleyici bunlara dayanır. Genel olarak, monad'ın sunumu farklıdır (farklı ama eşdeğer işlemler ve denklemler), ancak bu yüzeysel bir farktır.

Bir örnek almak için Bart Jacobs'un büyük miktarda çalışması monad kullanıyor. Birçok çalışma, genel bir sistem teorisi olan kömürden kaynaklanmaktadır. Jacobs'un (birçok) alana yaptığı katkılardan biri, monadlara dayanan sistemler için (kömürgerap olarak tanımlanır) genel bir izleme semantiği kavramının geliştirilmesidir . İz semantiği kavramının doğal olduğu söylenebilir: Bir sistemin semantiği nedir? Gözlenebilecek eylemlerin listesi!

Monadları anlamanın bir yolu, Haskell'de ilk monadları kullanarak programlamaktır. Sonra (google üzerinden) mevcut birçok iyi öğreticilerden birini bulun. Programlama açısından başlayın, sonra bazı temel kategori teorisinden başlayarak teorik tarafa geçin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.