Normal bir form - A-normal form

İçinde bilgisayar Bilimi, Normal bir form (kısaltılmış ANF) bir ara temsil nın-nin programları içinde işlevsel derleyiciler Sabry tarafından tanıtıldı ve Felleisen 1992'de[1] daha basit bir alternatif olarak devam eden stil (CPS). CPS'yi ara gösterim olarak kullanmanın avantajlarından bazıları, CPS'deki programlarda optimizasyonların kaynak dile göre daha kolay gerçekleştirilmesi ve ayrıca derleyicilerin oluşturmasının daha kolay olmasıdır. makine kodu CPS'deki programlar için. Flanagan vd.[2] derleyicilerin aynı faydaları tek bir kaynak düzeyinde dönüşümle elde etmek için ANF'yi nasıl kullanabileceğini gösterdi; bunun aksine, gerçekçi derleyiciler için CPS dönüşümü tipik olarak ek aşamalar içerir, örneğin CPS terimlerini basitleştirmek için.

ANF'de tümü argümanlar bir işlevi önemsiz olmalı. Yani, her bir argümanın değerlendirilmesi derhal durdurulmalıdır.

Bu makale, şu terimlerle ifade edilen temel tanımı ele almaktadır: λ-hesap zayıf indirgeme ve let-ifadeler, kısıtlamanın uygulandığı durumlarda

  1. sadece sabitlerin, λ terimlerinin ve değişkenlerin fonksiyon uygulamalarının argümanları olarak hizmet etmesine izin vermek
  2. önemsiz olmayan bir ifadenin sonucunun bir izin verilmiş değişken veya bir işlevden döndürülür.

Dilbilgisi

Aşağıdaki BNF gramer saf olanı tanımlar λ-hesap ANF'nin kısıtlamalarını desteklemek için değiştirildi:

tecrübe ::= VAL | EXP'de VAR = VAL olsun | EXPVAL içinde VAR = VAL VAL olsun ::= VAR | λ VAR. tecrübe

Derleyicilerde veya araştırmada kullanılan ANF varyantları genellikle sabitlere, kayıtlara, tuplelarlara, çok değişkenli fonksiyonlara, ilkel işlemlere ve koşullu ifadelere de izin verir.

Örnekler

İfade:

f (g (x), h (y))

ANF'de şu şekilde yazılmıştır:

let v0 = g (x) in let v1 = h (y) in f (v0, v1)

Ayrıca bakınız

Referanslar

  1. ^ Sabry, Amr; Felleisen, Matthias. "Devam Eden Geçer Tarzdaki Programlar Hakkında Muhakeme". 1992 ACM LISP ve Fonksiyonel Programlama Konferansı Bildirileri, LFP'92. San Francisco, CA, ABD. Sabry92. Alındı 2020-10-15.
  2. ^ Flanagan, Cormac; Sabry, Amr; Duba, Bruce F .; Felleisen, Matthias. "Devamlarla Derlemenin Özü" (PDF). Bildiriler ACM SIGPLAN 1993 Conf. Programlama Dili Tasarımı ve Uygulaması üzerine, PLDI'93. Albuquerque, NM, ABD. Flanagan93. Alındı 2012-11-16.