Haskell'deki ST monadını doğru bir şekilde anlarsam, runST
, bir hesaplamanın tekdüzeden kaçarken başka bir iş parçacığına başvurmadığından emin olmak için sıralı-2 türleri kullanır.runST
Bir Hindley-Milner tipi sisteme sahip bir oyuncak dilim var ve sorum şu: H tipi sistem, runST
uygulamalarını yazmanız için ad-hoc kuralıyla genişletmek ve böylece ST monad güvenli bir şekilde kullanılabilir rank-2 türlerini tanıtmadan kaçabilir, ? Daha doğrusu
, runST
tip forall s a. ST s a -> a
olurdu (yani rank-1) ve ilk HM let-ifadelerde türlerini genelleştirir aynı şekilde hesaplama türünü genelleme ama eğer bir tür hatası yükseltmek için çalışacağını söyledi yazarak kuralı s
tip değişkeninin bağlı olduğu bulunmuştur.
yukarıda sadece kabul kısıtlarsa programları vanilya HM kıyasla, bu yüzden sesi gibi görünüyor, ama ben emin değilim. Bu işe yarar mı? sorusuna yorumlar tamamen net değildir Ne olur ne
Evet, bir şekilde 'runST' ekleyebilirsiniz: İlginçtir ki, bu hiç biri rank 2 tipi imzalarını gerektiren, bir
ST
türünü tanıtan bir şey için özel kuralların yapmaya gerek sonunda yok Gerekli kontrolleri yapan özel yazım kuralı. Biri Ayrıca tip değişken 's' a'' görünmez kontrol etmeli görünüyor – augustssTamam aksi devlet monad dışında sızıntı olabilir, teşekkürler. – max
:-) – max