Haskell tiplerinin her zaman çalışma zamanından önce silineceğinden emin olabilirsiniz. Agda durumunda ne olur?Türleri çalışma zamanından önce silinir
Bağımlı tür bilgileri çalışma zamanına geçiriliyor mu?
Haskell tiplerinin her zaman çalışma zamanından önce silineceğinden emin olabilirsiniz. Agda durumunda ne olur?Türleri çalışma zamanından önce silinir
Bağımlı tür bilgileri çalışma zamanına geçiriliyor mu?
Çalışma zamanı nedir? En az dört arka uç vardır: GHC'yi (MAlonzo olarak adlandırılır), UHC'yi, Epic'i ve JavaScript'i hedefleyenler. Bazı başlangıç ayrıntıları the Agda wiki'da bulunabilir: Epic arka ucunun bu türdeki silmeyi veya bu paper'da ("3.3 Silme" bölümü) nasıl olduğunu okuyabilirsiniz. Kısacası, Epic ve UHC arka planları, tam olarak uygulanan bir işlevin aldığı tüm türleri siler, ancak bir programın semantiğini değiştirebildiğinden (UHC arka ucuna ilişkin paper'dan alıntılanan) tam silme işlemi gerçekleştirmez:
Tip çeviri
kalan terimler
Π
,Set
veLevel
türü sadece kontrol için anlamlı vardır. Agda'da,Set
veyaLevel
türlerinin bir değeri incelenemez veya desen eşleştirilemez. Agda, 'un bu türden herhangi bir değeri gözlemlemesini zorlaştırdığı için, çalışma zamanı semantiklerini etkileyemez. Bir programı yürütmek için,⊤
birim değeri ile bu değerlerin tüm oluşumlarını değiştirmek için güvenlidir.Ayrıca bu türünün tüm değerlerini tamamen kaldırmak için cazip olabilir. Bu, tercüme edilen programının anlambilimini potansiyel olarak değiştirebilir. Agda, lambdas altındaki ifadeleri değerlendirmez; tür ifadeleri alarak lambda soyutlamaları bırakarak değerlendirme blokaj lambdalarını kaldırabilir. Tipik bir kısmi silme işlemi 'da doğru bir şekilde mümkündür. Örneğin doymuş işlev uygulamaları, bu şekilde optimize edilmiş her zaman olabilir. türlerinin ne zaman silindiği ile ilgili daha detaylı bir açıklama Letouzey tarafından daha önceki çalışmalarda bulunabilir.
Agda'nın ne yaptığından emin değilim, ancak İdris mümkün olabildiğince uzaklaşmaya çalışıyor. Agda hakkında emin değilim ama söyleyebildiğim kadar çok şey yapmak kesinlikle iyi bir şey olurdu. – Jake