2012-11-27 13 views
13

id(a,b) -> a türünün tek işlevi olan a -> a ve fst tek işlevidir. Bu basit durumlarda, görmek oldukça basittir. Ama genel olarak, bunu kanıtlamak için nasıl gidiyorsunuz? Aynı tipte birden fazla olası işlev varsa ne olur?Bir işlevin türü için benzersiz olduğunu nasıl kanıtlıyorsunuz?

Alternatif olarak, bir işlev türü verildiğinde, bu türün benzersiz (bu doğruysa) işlevini nasıl elde edersiniz?

Düzenleme: Özellikle türlere kısıtlamalar eklemeye başladığımızda neler olduğuyla ilgileniyorum.

+8

esinlenerek rağmen A Simple Proof Technique for Parametricity Results Karl Crary tarafından kullanıldı, insanların genellikle id' olduğunu 'söyleyebilirim düşünüyorum Sadece 'a' kelimesinin 'ilginç' veya 'toplam' fonksiyonu. 'undefined', Haskell’de * herhangi bir türde olabilir, ancak kullanışlı bir işlev değildir. Ayrıca ilginizi çekebilir Cinn, mümkün olduğunda bir türden fonksiyonlar üreten bir program, http://lambda-the-ultimate.org/node/1178 –

+0

@JohnL Djinn aslında benzersizliği kanıtlamaz, değil mi? Varsa, o tipin bazı işlevlerini bulur. –

+3

Bu soru, http://cs.stackexchange.com – Heatsink

cevap

15

Sonuç olarak Reynolds'un parametrikliğinden türetilmiş ve en ünlüleri Wadler tarafından theorems for free'da gösterilmiştir.

Temel parametriklik sonuçlarını kanıtlamanın en zarif yolu, "Tektonlu Tip" kavramını kullandım. Esasen, herhangi ADT

verilen
data Nat = Zero | Succ Nat 

orada (aynı zamanda GADT olarak da bilinir) bir dizinlenmiş ailesini

data SNat n where 
    SZero :: SNat Zero 
    SSucc :: SNat n -> SNat (Succ n) 

var ve biz Türlenmemiş için her türlü "silme" ile dilimize bir anlambilim verebilir Dil, Nat ve SNat gibi aynı şeyleri siler. Ardından, semantik beri tek sakini (kendi tekil), silinmeye verilir etti

id (x :: SNat n) :: SNat n 

SNat n dilin yazarak kurallarına, işlevler onların argümanları türünü, yani gelen depozitolu tek değer kullanamazsınız Herhangi bir Nat üzerinde id, verdiğiniz sayıdır. Bu temel argümanı parametricity sonuçlarının en kanıtlamak için uzatılabilir ve burada sahip sunum bilgiçlik olmak Stone and Harper

İlgili konular