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?

Mozibur Ullah
sumber

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.

Api Ptharien
sumber
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)"

pengguna96830
sumber