Futures'lar kategori teorisi açısından nasıl tanımlanmaktadır?


Yanıtlar:


25

Olduğu gibi, şimdi bunun hakkında bir yazı yazıyorum. IMO, gelecekleri veya vaatleri düşünmenin iyi bir yolu, Curry-Howard'ın zamansal mantıkla olan yazışmasıdır .

Temel olarak, geleceklerin ardındaki fikir, devam etmekte olan ve senkronize edebileceğiniz bir hesaplamayı temsil eden bir veri yapısı olmasıdır. Zamansal mantığı açısından, bu sonuçta operatörüdür . Bunun monadik bir yapısı var: , işleminin argümanını derhal döndüren bir işlem veA

return:AAbind:(AB)AB
returnbind yeni bir işlem için bekler oluşturur ' s değeri, bu değere değerini uygular ve sonra geri dönmeden önce değerini bekler . afBSözler / CommonJS için bir teklif monadic bağlama işlemini çağırır thenve Scala 2.10 standart monadic arayüzü verir .

Sonunda operatörüne olan çift , her an bir aldığınızı söyleyen, zamansal mantığın her zaman Operatör operatörüdür . Kripke zamansal mantığının anlamsal mantığından (sadece uygulanabilirliği modelleyeceğiniz) bir -calculus'un kategorik bir anlambilimine ( lambda-terimlerini / ispatlarını modellediğiniz yere) geçtiğinizde, bunu yapmanın aslında birden fazla yolu vardır. .AAAλ

Yapabileceğin en basit şey almak AA , çünkü bir kez sahipseniz, her zaman elinizdedir. Bu işe yarıyor ama sıkıcı, IMO. :)A

Yapılacak en doğal şey (IMO), ki bu, potansiyel olarak farklı)AStreamAA , her seferinde . Ardından, işlevsel reaktif programlama (FRP) 'nin (ilk önce Tarmo Uustalu ve Varmo Vene tarafından önerilen) kombine stilini, geleceğe yönelik monadik programlama tarzı olarak görebilirsiniz.

Bununla birlikte, comonadic calculus, zarafetlerine rağmen, açık bir şekilde akışlarla programlamaya göre ciddi bir ifade kaybına neden olur, çünkü kullandıkları serbest kömürböcekleri kategorisi çok ilginç programları ifade etmek için çok az küresel unsurlara sahip olduğu ortaya çıkar. , özellikle sabit noktalar.λ

Nick Benton ve ben, Ultrametrik Reaktif Programların Semantikası makalemizdeki akışlarla açıkça programlamayı tartıştık . Daha sonra, Alan Jeffrey , LTL'yi, FRL türünde FRP olan bir tür sistem olarak kullanmayı önerdi , Wolfgang Jeltsch'in de makalesinde yaptığı bir gözlem. Doğrusal Zamanlı Temporal Mantık ve Fonksiyonel Reaktif Programlama için Ortak Bir Kategorik Anlambilimine Doğru.

Nick ile benim aldığımız görüş ile Alan ve Wolfgang'ın aldıkları bakış açısı arasındaki fark, Birkedal ve arkadaşlarının verdiği yapıyı karşılaştırarak en iyi anlaşıldı (IMO). Sentetik korumalı alan teorisindeki ilk adımlar: Alan'ın kağıt ile ağaçların . Ağaçların topoları (büyüklüğüne göre sıralanan doğal sayılar üzerinde ön ısıtıcılar) Nick ve benim kullandığımız ultrametrik uzaylar kategorisine çok benzer, ancak Alan kategorisi ile karşılaştırmak çok daha kolaydır, çünkü bunlar her ikisi de ön kategoriler.

Özellikle eşzamanlılık için vadeli işlemlerle ilgileniyorsanız, bakmak daha iyi bir fikir olabilir. LTL yerine CTL'ye . AFAIK, şu anda keşfedilmemiş bir bölge!

EDIT: İşte taslak için bir link . Belge çoğunlukla yazılı FRP uygulamakla ilgilidir, bu nedenle dil senkronizedir. Ancak, Bölüm 3.3'teki gelecek / olay tartışmasının çoğu temel olarak gerçekten eşzamanlı dillere de uygulanmalıdır.


1
Tamamladığınızda bunun bir kopyasını almayı çok isterim.
Dave Clarke

1
Bu, vadeli işlemlerin önemli bir özelliğini kaybediyor gibi görünüyor: bir değer elde edildiğinde değişemez. bir aksiyom olarak alarak ifade etmeye çalışırdım , ama istediğimiz bu değil bir akış anlamına gelirse ... Ve bittiğinde kağıdın bir kopyasını da istiyorum :)AA
Alexey Romanov

Geçenlerde Scala türünü okudum Try[T]ve Future[T]çift ​​oldum, ancak bunun ne anlama geldiğini / ne anlama geldiğini tam olarak anlamadım.
Giorgio,
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.