forallAnahtar kelimenin sözde "varoluş türleri" olarak nasıl kullanıldığını anlamaya başlıyorum :
data ShowBox = forall s. Show s => SB s
Bununla birlikte, forallbu sadece nasıl kullanıldığı hakkında bir alt kümedir ve aklımı böyle şeylerde kullanımı etrafında satamıyorum:
runST :: forall a. (forall s. ST s a) -> a
Veya bunların neden farklı olduğunu açıklamak için:
foo :: (forall a. a -> a) -> (Char, Bool)
bar :: forall a. ((a -> a) -> (Char, Bool))
Veya tüm bu RankNTypesşeyler ...
Akademik ortamlarda normal olan dil türlerinden ziyade açık, jargon içermeyen İngilizce'yi tercih ediyorum. Ben bu konuda okumaya çalışıyorum açıklamaların çoğu (arama motorları aracılığıyla bulabilirsiniz olanlar) bu sorunları var:
- Tamamlanmamışlar. Onlar kod okuyana kadar beni mutlu hissettiriyor ( "varoluşsal türleri" gibi) bu anahtar kullanımının bir kısmını açıklamak ki tamamen farklı bir şekilde kullanır bunu (gibi
runST,foovebarüzeri). - Ayrık matematik, kategori teorisi veya soyut cebirin hangi dalında bu hafta popüler olduğunu en son okuduğum varsayımlarla yoğun bir şekilde doludurlar. (Bir daha asla " uygulama ayrıntıları için ne olursa olsun makaleye danışın" kelimesini okumam, çok yakında olacaktır.)
- Sık sık basit kavramları bile kıvrımlı bükülmüş ve kırılmış dilbilgisi ve semantiğe dönüştürecek şekilde yazılmıştır.
Yani...
Asıl soru üzerine. forallAnahtar kelimeyi jargonda demlenmiş bir matematikçi olduğumu varsaymayan, açık, düz İngilizce (veya bir yerde varsa, kaçırdığım açık bir açıklamaya işaret eden) tamamen açıklayabilir mi?
Eklemek için düzenlendi:
Aşağıdaki yüksek kaliteli cevaplardan iki çarpıcı cevap vardı, ama ne yazık ki en iyisini seçebiliyorum. Norman'ın cevabı , bazı şeylerin teorik temellerini forallve aynı zamanda bana bazı pratik sonuçlarını gösteren bir şekilde açıklayan ayrıntılı ve yararlıydı . yairchu'nun cevabıbaşka hiç kimsenin bahsetmediği bir alanı (kapsam tipi değişkenleri) kapsamakta ve tüm kavramları kod ve bir GHCi oturumu ile göstermektedir. Her ikisini de en iyi şekilde seçebilseydim, yapardım. Ne yazık ki yapamam ve her iki yanıtı da yakından inceledikten sonra, yairchu'nun açıklayıcı kod ve ekli açıklama nedeniyle Norman'ın biraz dışına çıkmasına karar verdim. Bu biraz haksızlık, çünkü gerçekten forallbunu bir tip imzayla gördüğümde beni zayıf bir korku hissi bırakmayan noktaya anlamak için her iki cevaba da ihtiyacım vardı .