apakah haskell memiliki tipe dependen?


20

Saya tahu Haskell sudah memiliki kemampuan untuk parametrise tipe lebih dari tipe lain (mirip dengan pemrograman template di C ++), tapi saya bertanya-tanya apakah Haskell juga dapat menentukan parameter atas nilai-nilai - apakah mendukung jenis dependen. Dengan tipe dependen, Anda dapat memiliki tipe yang parametris di atas bilangan bulat, misalnya vektor ukuran n, matriks ukuran n × m, dll.

Jika tidak, mengapa tidak? Dan adakah kemungkinan hal itu akan didukung di masa depan?

Jawaban:


18

Haskell tidak memiliki tipe dependen penuh, meskipun bisa sangat dekat dengan ekstensi like DataKindsdan TypeFamilies. Masalahnya saat ini, sejauh yang saya tahu, adalah bahwa Haskell tingkat-nilai memiliki dasar yang eksplisit tetapi Haskell tipe-tingkat tidak.

Ini tidak menghentikan Anda dari parametrizing jenis lebih dari jenis lain, termasuk DataKind-lifting nilai . Pada GHC 7.6, dan dengan DataKindsdiaktifkan, Anda dapat menggunakan naturals dan string level-level, serta tuple level-type, daftar level-level, dan pengangkatan level-level dari semua (non-lebih tinggi, tidak digeneralisasi) tipe data aljabar, tidak terbatas, yang mirip dengan (tetapi jauh lebih umum daripada) kemampuan C ++ untuk menggunakan bilangan bulat dalam templat.


1
Apakah perubahan yang akan datang dalam GHC 8 menambah jenis ketergantungan penuh?
Janus Troelsen

@ JanusTroelsen Tidak cukup; mereka memungkinkan jenis ketergantungan .
Api Ptharien

8

Untuk sedikit memperluas apa yang dijelaskan Ptharien Flame dengan baik tentang status saat ini - dan GHC Haskell tampaknya bergerak lebih jauh ke arah tipe dependen (sambil mempertahankan pemisahan fase) dengan masing-masing versi.

Jadi untuk misal di ICFP 2013 September ini, makalah tentang fase selanjutnya dari proses ini harus disajikan, "Menuju Haskell mengetik: Menuju Sistem dengan kesetaraan jenis" , tentang meruntuhkan jenis dan tingkat jenis. Seperti yang diumumkan rencananya sekitar 3 tahun yang lalu .

Dan itu bahkan menyebutkan langkah selanjutnya: "Kami juga sadar bahwa disertasi mendatang Adam Gundry akan memasukkan tipe-in ​​dalam versi System FC dan kami juga ingin membuat fitur ini tersedia dalam bahasa sumber juga. (Komunikasi pribadi)"


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.