Ada banyak cara untuk memodelkan polimorfisme melalui teori domain, izinkan saya menjelaskan satu yang mudah dipahami, sehingga Anda dapat memikirkannya sendiri. Ini adalah "model PER".
Ambil model apa pun yang belum diketik λ-calculus, misalnya domain D seperti yang D→D adalah penarikan D (misalnya, ambil D seperti yang D≅N⊥×(D→D)). MembiarkanΛ:D→(D→D) dan Γ:(D→D)→D menjadi pencabutan dan bagian, masing-masing.
Kami akan menafsirkan jenis sebagai hubungan ekivalensi parsial (PER) pada D. Ingatlah bahwa PER adalah hubungan yang simetris dan transitif, tetapi tidak harus refleksif. Untuk setiap jenisτ jadi kami menetapkan PER ∼τ. Pikirkanx∼τx sebagai "x adalah elemen dari τ"dan x∼τy sebagai "x dan y sama sejauh τ prihatin ".
Kita dapat memiliki beberapa tipe dasar (tetapi tidak perlu), misalnya jika kita memastikan itu N⊥ adalah subdomain dari D melalui penyematan ι:N→D maka kita dapat mendefinisikan ∼nat oleh
x∼naty⟺∃n∈N.x=ι(n)=y.
PER yang diberikan ∼τ dan ∼σ, tentukan ruang fungsi PER ∼τ→σ oleh
x∼τ→σy⟺∀z,w∈D.z∼τw⇒Λ(x)(z)∼σΛ(y)(w)
Istilah-istilah tersebut ditafsirkan sebagai tidak diketik λIstilah -kalkulus sebagai orang biasanya menafsirkannya D.
Inilah lucunya. Anda dapat menafsirkan polimorfisme sebagai persimpangan PER, yaitu:
x∼∀X.τ(X)y⟺for all PERs ≈, x∼τ(≈)y.
Kami dapat menghitung PER sesuai dengan
∀X.X: ini adalah persimpangan dari semua PER, tetapi itu akan menjadi PER kosong. Menghitung
∀X.X→Xadalah latihan yang menarik. Menghitung
∀X.X→X→X adalah latihan yang sulit (yang membuat saya sibuk selama seminggu ketika saya masih mahasiswa teori domain).
Jika kita ingin rekursi dalam bahasa kita maka kita perlu memperhitungkan poin tetap. Satu kemungkinan adalah untuk membatasi PER untuk yang mengandung⊥Ddan ditutup di bawah suprema rantai yang meningkat. Lebih tepatnya, ambil PERs saja≈ untuk itu
- ⊥D≈⊥D, dan
- jika x0≤x1≤x2≤⋯ dan y0≤y1≤y2≤⋯ meningkatkan rantai D seperti yang xi≈yi untuk semua i, kemudian supixi≈supiyi.
Kita sekarang bisa menafsirkan fixτ:(τ→τ)→τdengan menerapkan teorema Kanster-Tarski tentang keberadaan titik tetap, seperti yang kita lakukan dalam teori domain biasa. Kali ini,∀X.X tidak kosong, karena mengandung justru ⊥D.