Haskell fonksiyon kompozisyonu boru ve filtre mimari modelinin bir örneğidir


9

Boru ve filtre mimari modeli, her bir elemanın çıktısı bir sonrakinin girişi olacak şekilde düzenlenmiş bir işleme elemanları zinciri olarak tanımlanır . Her örnek, bir tür paylaşılan arabellek yoluyla gerçekleştirilen süreçler arası veya zincirler arası bağlantıyı göz önünde bulundurur.

Bana göre Haskell fonksiyon kompozisyonu aynı görevi yerine getiriyor . Sadece işlev siparişi ile ilgili olsa ve boru olarak açık bir tampon kullanılmasa bile bu modelin bir örneği olduğunu söyleyebilir miyiz? Evet ise, tembel olmayan bir dil için de aynı şeyi söyleyebilir miyiz?

Yanıtlar:


8

Bağlantılılar, ancak bağlantı başka türlü (bir çeşit).

Uygun bir kategorideki morfizm kompozisyonu, hem fonksiyon kompozisyonunu (kategorinin Setkatı bir dil ve CPOtembel bir dil için olduğu yerde) hem de işlem kompozisyonunu (kategorinin, nesnelerin dizeler olduğu, morfizmlerin kabuk olduğu (AFAIK, adsız) kategorisi olduğu) doğru bir şekilde modeller. süreçler ve kompozisyon boru operatörüdür). Kabuk süreçleri, genelliği veya doğruluğu kaybetmeden, türün (tembel) işlevleri olarak görülebilir ve türün String -> WriterT String IO Stringsaf işlevleri, tür işlevlerine String -> Stringkayıpsız bir şekilde dönüştürülebilir String -> Identity String, bu nedenle her ikisi de gerçekten sadece (>>=)gizlidir.


1
Bir nedir CPOkategori? Google-fu'm zayıf :(
Andres F.

3
@AndresF. CTamamlanmamış Psavaşçıların kategorisi O.
Ptharien'in Alevi

2

Bir fark var. Borular ve filtreler veri ve veri bağlantıları ile ilgilenirken Haskell Fonksiyon Kompozisyonu birinci sınıf fonksiyonlarla ilgilenir . Birinci sınıf fonksiyonlar, boruların ve filtrelerin olmadığı şekillerde birleştirilebilir.

İleri Okuma
Kompozisyon, fonksiyonel programlama bağlamında ne anlama geliyor?


1
Kompozisyonun kendisi birinci sınıf fonksiyon olduğu için birinci sınıf fonksiyonla uğraşmak zorunda değildir. Örneğin fonksiyonun terkibinden ++bileşimi, ., ++ . ++bir değeri alıp iki kere arttırılır o değeri döndürür ama olur ++birinci sınıf işlev değil, sadece bir değeri ve döner bir değer alır. Kompozisyon işlevi, iki işlevi alan ve birini döndüren birinci sınıf işlevidir.
Jimmy Hoffa

1
@JimmyHoffa, bence 'birinci sınıf işlev' kavramını 'üst düzey işlev' ile karıştırıyorsunuz. Bir dilde 'birinci sınıf işlevler' varsa, işlevleri diğer birinci sınıf veri türleriyle aynı şekilde ele alır; daha yüksek dereceli bir fonksiyon, fonksiyon parametrelerini alarak ve / veya fonksiyon değerlerini döndürerek fonksiyonların birinci sınıf doğasından yararlanabilir.
Levi Pearson

@LeviPearson evet, sabah kalktığımda yanlışlıkla beynimi yanlara koymalıydım, bu yorumu yazdım. Buraya P.SE için iyi içerik yazmaya devam edecekseniz, P.SE'in genel sohbetinde
Jimmy Hoffa
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.