SORU
26 HAZİRAN 2010, CUMARTESİ


Haskell gerçekten tamamen işlevsel bir dil unsafePerformİO düşünen var mı?

Haskell genellikle tamamen işlevsel bir dil örneği olarak başvurulur. Nasıl bu System.IO.Unsafe.unsafePerformIO varlığını verilen haklı olabilir mi ?

Edit: "tamamen işlevsel" imkansız programın işlevsel parçası haline saf olmayan kod tanıtmak için yapılmıştı. düşündüm

CEVAP
26 HAZİRAN 2010, CUMARTESİ


Haskell Dediğimiz Dil

unsafePerformIO bir parçasıYabancı Fonksiyon Arayüzüşartname, Haskell 98 çekirdek belirtimi değil. Tamamen işlevsel bir arayüz ortaya çıkartmak amacıyla bazı kapsam kaçış yok yerel yan etkileri yapmak için kullanılır. Yani, bu tip denetleyicisi bunu bizim için yapamaz etkileri gizlemek için kullanırız (statik garantisi etkileri gizleyen ST monad farklı olarak).

Tam da dediğimiz birden fazla dil göstermek için"", aşağıdaki resmi dikkate alın. Haskell Her yüzük hesaplama özellikleri belirli bir dizi, ifade gücü ilişkilendirilmesi ile bölgede güvenlik ve (eğer bu özellik varsa yazabilirsiniz program numarası) tarafından sipariş karşılık gelir.

Dili Haskell 98 olarak bilinen ortasına, toplam ve kısmi fonksiyonları kabul belirtildi. Sadece toplam işlevler izin verilir Agda (Epigram), daha az etkileyici, "daha saf" ve daha güvenli. ama Bugün kullandığımız her şey gibi Haskell FFI için yer alırken, unsafePerformİO yaşadığı yer. Yani, yazabilirsinizhiçbir şeyeğer dış halka şeyleri kullanırsanız rağmen modern Haskell, daha sıkı güvenlik ve güvenlik garanti basit iç halkaları tarafından yapılmıştır kurmak olacaktır.

alt text

Yani, Haskell programları genellikle 100% yerleşik olmayan referentially saydam kod, ancak, saf olan sadece orta derecede ortak dilvarsayılan olarak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • MrMimoB

    MrMimoB

    11 NİSAN 2011
  • spederson7

    spederson7

    17 Temmuz 2006