Sıkılık analizi - Strictness analysis

İçinde bilgisayar Bilimi, sıkılık analizi bir fonksiyonun bir katı olmayan fonksiyonel programlama dil katı bir veya daha fazla argümanında. Bu bilgiler, derleyiciler çünkü katı işlevler daha verimli bir şekilde derlenebilir. Bu nedenle, derleme zamanında bir işlevin katı olduğu kanıtlanırsa (katılık analizi kullanılarak), daha verimli bir işlev kullanmak üzere derlenebilir. çağrı geleneği kapalı programın anlamını değiştirmeden.

Bir işlev olduğuna dikkat edin f söylendi uzaklaşmak dönerse : operasyonel olarak bu şu anlama gelir f ya çevreleyen programın anormal sonlandırılmasına (örneğin, bir hata mesajı ile hata) ya da sonsuz döngüye neden olur. "Iraksama" kavramı önemlidir, çünkü katı bir işlev, farklılaşan bir argüman verildiğinde her zaman farklılaşan bir işlevdir, oysa tembel (veya katı olmayan) bir işlev, böyle bir argüman verildiğinde farklılaşabilen veya olmayabilen işlevdir. Sıkılık analizi, fonksiyonların "diverjans özelliklerini" belirlemeye çalışır ve böylece katı olan bazı fonksiyonları tanımlar.

Sıkılık analizine yaklaşımlar

İleri soyut yorumlama

Sıkılık analizi, ileriye dönük olarak tanımlanabilir soyut yorumlama programdaki her bir işlevi, argümanların diverjans özelliklerini sonuçların diverjans özelliklerine eşleyen bir işlevle yaklaşıklaştırır. Öncülüğünü yaptığı klasik yaklaşımda Alan Mycroft soyut yorumda iki nokta kullanıldı alan adı 0 seti ifade eden bağımsız değişken veya dönüş türünün bir alt kümesi olarak kabul edilir ve 1, türdeki tüm değerleri belirtir.[1]

Talep analizi

Glasgow Haskell Derleyici (GHC) olarak bilinen geriye dönük bir soyut yorum kullanır talep analizi diğer program analizlerinin yanı sıra katılık analizi yapmak. Talep analizinde, her fonksiyon, sonuçtaki değer taleplerinden bağımsız değişkenler üzerindeki değer taleplerine kadar bir fonksiyon tarafından modellenir. Bir fonksiyon, sonucuna yönelik bir talep bu argüman için bir talebe yol açıyorsa, bir argümanda katıdır.[2]

Projeksiyon tabanlı katılık analizi

Projeksiyon tabanlı katılık analizi, Philip Wadler ve R.J.M. Hughes, katılık kullanır projeksiyonlar Bir liste argümanında kafa sertliği gibi daha ince katılık biçimlerini modellemek. (Buna karşılık, GHC'nin talep analizi yalnızca ürün türleri yani, yalnızca tek bir kurucu.) Bir işlev kafa katı kabul edilirse , nerede liste argümanını baş değerlendiren bir projeksiyondur.[3]

1980'lerde katılık analizi üzerine çok sayıda araştırma yapıldı.

Referanslar

  1. ^ Mycroft, Alan (1980). "İhtiyaca göre çağrıyı değere göre çağrıya dönüştürme teorisi ve pratiği". Bilgisayar Bilimlerinde Ders Notları: Proc. 4. Uluslararası Symp. Programlama, Cilt. 83. Springer-Verlag.
  2. ^ "GHC Yorumu: GHC'deki talep analizörü". Alındı 2014-02-12.
  3. ^ Wadler, P .; R.J.M. Hughes (1987). "Sıkılık analizi için tahminler". Fonksiyonel programlama ve bilgisayar mimarisi; LNCS 274. Springer-Verlag.