Apakah mungkin untuk melakukan Tipe Ketergantungan pada Racket yang Diketik?


9

Apakah mungkin untuk menggunakan Tipe Tanggungan dalam implementasi Typed Racket yang ada ? (Yaitu apakah mereka ada di dalamnya?)

Apakah mungkin untuk menerapkan Sistem Jenis Tanggungan menggunakan Typed Racket?


3
Saya pikir Anda perlu sedikit mengklarifikasi pertanyaan ini: apakah Anda bertanya apakah ada tipe dependen di Racket atau cuaca yang memungkinkan untuk menambahkannya ? Jika yang pertama, maka tidak (oleh definisi paling masuk akal dari tipe dependen), dan jika yang terakhir, maka ya.
cody

1
Seperti dicatat cody, pertanyaan ini tidak jelas, dan tergantung pada apa yang Anda maksud, jawabannya adalah tidak-sangat-tidak-menarik atau tidak-sangat-menarik ya. Harap pertanyakan pertanyaan ini sehingga kami tahu apa yang sebenarnya Anda tanyakan.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:



-1

Saya pikir "melakukan tipe dependen" menggunakan kontrak sudah dimungkinkan. Periksa https://docs.racket-lang.org/guide/contracts-struct.html dan cari "Memeriksa Properti Struktur Data".

Anda bisa berargumen, bahwa ini lebih merupakan simulasi efek, daripada menjadikannya sebagai bagian dari bahasa. Namun, di suatu tempat Anda harus menulis kode, yang memberi tahu penerjemah / kompiler apa dependensi itu dan di Racket Anda dapat melakukannya dengan kontrak.


Saya senang dengan gagasan bahwa makro dalam raket adalah 'memperpanjang kompiler'
hawkeye

@hawkeye Bisakah Anda memberikan jawaban untuk pertanyaan ini menerapkan tipe dependen dengan makro? (Saya tidak ragu itu mungkin.)
Zelphir Kaltstahl

Argumen tentang apakah makro memperpanjang kompiler ada di sini: stackoverflow.com/a/268091/15441 dan Anda bisa memasukkan potongan kode apa pun ke dalam makro - sehingga kode yang digunakan untuk tipe dependen dapat dimasukkan ke dalam makro. Itulah poin yang saya buat.
hawkeye
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.