Saya mencoba memahami makalah ΠΣ: Jenis Ketergantungan tanpa Gula dengan menerapkan juru bahasa dan pemeriksa jenis bahasa. Dalam melakukannya, saya telah melihat bahwa unfold t as x -> u
sintaks untuk definisi rekursif (sintaks didefinisikan dalam Bagian 2.1) mengikat variabel, tetapi saya tidak melihat mengapa itu diperlukan. Tak satu pun dari contoh di koran yang benar-benar menggunakan pengikatan variabel - mereka semua menggunakan bentuk steno unfold t
(makna unfold t as x -> x
).
Saya tidak melihat bahwa jenis memeriksa aturan untuk itu (dari bagian 5) menggunakan variabel mengikat, tapi saya tidak mengerti implikasi dari ini. Sejauh yang saya tahu unfold t as x -> u
sama dengan let x = unfold t in u
.
Bisakah seseorang memberikan contoh kapan pengikatan variabel bermanfaat atau perlu? Adakah istilah yang mengecek dengan bentuk panjang unfold
tetapi tidak dengan bentuk pendek dan let
?
sumber
Jawaban:
Saya tidak berpikir ada alasan ajaib / perlu. IMO, ditulis seperti itu untuk membuatnya lebih jelas bahwa itu
unfold
adalah aturan eliminasi analitik / pemeriksaan; sama seperti mengapasplit
ditulis dengan cara seperti itu daripada ditulis sebagai proyeksi pertama dan kedua, dan mengapacase
ditulis seperti itu daripada ditulis sepertiuneither
di Haskell.Kembali bit "analitik", perhatikan bagaimana aturan eliminasi lainnya sintetik / inferior (beta) atau dua arah (bang)
sumber
!x
tidak ditulisforce x as y -> y
. Apakah ada alasan yang lebih dalam atau tidak, jawaban ini memuaskan keingintahuan saya. Terima kasih!