Hubungan antara Type Assignment system (TA) dan sistem Hindley-Milner

8

Baru-baru ini saya memulai studi saya dalam teori tipe / sistem tipe dan Lambda Calculus.

Saya sudah membaca tentang Kalkulus Ketik Sederhana Diketik dalam gaya Gereja dan Kari. Yang terakhir juga dikenal sebagai Type Assignment system (TA).

Saya berpikir tentang hubungan antara TA dan Hindley-Milner (HM), sistem dalam bahasa seperti ML dan Haskell.

Buku Lambda-Calculus and Combinators: An Introduction (Hindley) mengatakan bahwa TA bersifat polimorfik (hal. 119). Apakah itu sama dengan polimorfisme dalam sistem seperti HM dan System-F?

TA dikatakan memiliki properti normalisasi yang kuat, sehingga tidak sepenuhnya lengkap. Bahasa yang menggunakan sistem HM turing lengkap, Haskell misalnya. Jadi harus menjadi kasus bahwa sistem HM memungkinkan istilah seperti loop infinity untuk menerima suatu tipe Apakah itu benar atau saya melewatkan sesuatu?Ω

Bagaimanapun, saya ingin tahu hubungan antara TA dan HM.

Rafael Castro
sumber
1
Saya belum pernah mendengar tentang sistem Assignment Typed sebelumnya. Saya meng-google-nya, dan mendapat pertanyaan ini sebagai jawaban ketiga, yang artinya pasti sangat niche. Bisakah Anda jelaskan apa itu? Juga, apa itu "infinity loop"? Apakah maksud Anda perhitungan yang tidak berhenti?
Gardenhead
Jenis Penugasan adalah versi Kalkulus Lambda Diketik Sederhana yang dibuat oleh Curry. Anda harus mencarinya di buku yang disebutkan. Dan ya, adalah loop infinity loop default atau program yang tidak berhenti. Ωλ
Rafael Castro
Saya pikir saya harus mengajukan pertanyaan ini di beberapa stackexchange lebih teoritis / matematis. Haruskah saya?
Rafael Castro
Kamu bisa mencoba. Berikan cstheory dan mathoverflow tembakan. Namun, Anda mengatakan bahwa Anda "baru memulai studi Anda", jadi saya akan terkejut jika pertanyaan Anda sudah semaju itu. Saya pikir Anda hanya menggunakan terminologi yang tidak biasa untuk menggambarkan konsep-konsep sederhana (bisa jadi salah). Sebagai contoh, infinity loop biasanya disebut tipe bawah (jika saya mengerti Anda dengan benar).
Gardenhead
1
Jelas pertanyaan saya bukan di tingkat penelitian. Pertanyaan saya lebih seperti "hei, saya mengerti konsep dasar ini kan?". Tapi saya akan coba, mungkin saya mendapat jawaban.
Rafael Castro

Jawaban:

9

Sistem F dan subsistemnya HM memiliki tipe sebelumnya untuk kuantifikasi universal:

τ:: =x.τ | ...

yang tidak dimiliki sistem di Hindley / Seldin. Itulah perbedaan utama.

Sekarang Sistem F tidak memiliki tipe-inferensi decidable, dan HM adalah cara menggabungkan inferensi tipe dengan polimorfisme parametrik yang cukup ekspresif. HM mencapai ini dengan hanya memungkinkan kuantifikasi universal terluar, yaitu semua jenis adalah dari bentuk

x1x2...xn.τ

dimana τ bebas kuantifier (dan n0). HM memberikan sistem aturan yang memastikan bahwa hanya program yang dapat diketik dengan cara ini yang dapat diterima. Ini dicapai dengan "biarkan-polimorfisme". Sistem di Hindley / Seldin tidak melakukan semua itu. Kemudian, dalam Bab 13, Hindley / Seldin memperkenalkan sistem tipe murni (PTS), di mana Sistem F adalah kasus khusus. Saya tidak yakin apakah HM dapat dinyatakan sebagai PTS.


Pertanyaan normalisasi yang kuat adalah ortogonal. Sistem F dan HM sangat normal, tetapi itu dapat dengan mudah diperbaiki dengan memperkenalkan kombinator titik-fix atau serupa. Makalah tipe-skema utama untuk program fungsional oleh L. Damas dan R. Milner bahkan menyatakan ini: " Misalnya, rekursi dihilangkan karena dapat diperkenalkan dengan hanya menambahkan operator titik tetap polimorfik ... " Pengenalan fixpoints , membuat sistem Turing lengkap, tidak menimbulkan masalah dari sudut pandang inferensi tipe.

Martin Berger
sumber
Apakah benar untuk berpikir HM = TA + "let-polymorphism"? Buku Lambda-Calculus and Combinators (Hindley), sejauh ini, tidak mengatakan apa-apa tentang kuantifikasi universal pada tipe. TA menggunakan variabel tipe, tapi saya tidak tahu apa-apa tentang kisaran tipe ini. Untuk lebih jelasnya, saya belum mempelajari sistem HM, tapi saya tahu untuk apa.
Rafael Castro
@RafaelCastro Jika Anda menyipitkan mata ... Jika Anda memiliki latar belakang CS, buku TAPL Pierce mungkin merupakan penjelasan yang jauh lebih mudah diakses dari HM, dan sistem pengetikan secara umum. Makalah Damas / Milner yang saya referensikan sangat mudah dibaca, jika Anda dapat melihat melewati pengaturan jenis yang lama-rusak. Saya memberikannya kepada mahasiswa PhD awal saya. Coba baca! Hindley / Seldin sedikit di sisi formal.
Martin Berger
Variabel @RafaelCastro Type berkisar dari jenis. Semua jenis. Inilah sebabnya mengapa Sistem F tidak tepat.
Martin Berger
Terima kasih. Ya, saya seorang mahasiswa sarjana di CS, jadi saya akan mencoba buku TAPL Pierce.
Rafael Castro
@RafaelCastro Mungkin tidak ada cara yang lebih baik untuk belajar tentang jenis daripada membaca TAPL dan menerapkan sistem pengetikan yang dibahas di sana.
Martin Berger