- Hazel adalah lingkungan pemrograman fungsional live berbasis web yang berpusat pada typed holes, memungkinkan program yang belum selesai tetap diperiksa tipenya, dimanipulasi, dan dijalankan
- Intinya adalah memodelkan kondisi tidak lengkap seperti bagian kosong, type error, dan konflik merge sebagai hole, sehingga mengurangi bagian tempat editor kehilangan makna
- Program tidak lengkap yang dapat dibuat di Hazel didefinisikan secara statis dan dinamis, serta dapat memiliki tipe yang tidak lengkap dan hasil eksekusi yang tidak lengkap
- Target implementasinya adalah bahasa fungsional keluarga Elm/ML, dan digunakan sebagai fondasi untuk riset pendidikan pemrograman, penyuntingan kolaboratif, pembelajaran pembuktian, dan penyelesaian kode AI
- Ini adalah proyek riset open source yang dipimpin oleh Future of Programming Lab di University of Michigan, dengan build web untuk dicoba dan kode sumber GitHub yang tersedia publik
Ide inti Hazel
- Hazel adalah lingkungan pemrograman fungsional live yang disusun di sekitar typed holes
- Program yang belum selesai pun dapat terus dikerjakan untuk hal-hal berikut
- Pemeriksaan tipe
- Manipulasi
- Eksekusi
- Tujuannya adalah menciptakan lingkungan yang tetap memberikan umpan balik bermakna meski kode yang sedang diedit berada dalam kondisi rusak
Cara menangani program yang tidak lengkap
- Dalam proses pemrograman pada umumnya, teks program sering berada dalam kondisi yang belum lengkap secara formal
- Bagian kosong
- Type error
- Konflik merge
- Definisi bahasa pemrograman yang ada tidak memberi makna formal pada struktur semacam ini, sehingga bahkan perilaku sebagian kode yang sudah selesai pun sulit ditangani sebagai umpan balik live
- Editor dan tool akhirnya bergantung pada heuristik yang rumit agar dapat menyediakan code completion, pemeriksaan tipe, dan navigasi kode tanpa terputus
- Hazel memodelkan program yang tidak lengkap sebagai program dengan hole
- Hole merepresentasikan bagian program yang hilang
- Hole bertindak seperti selubung yang membungkus bagian yang salah atau bagian konflik dalam lingkungan kolaboratif
- Pendekatan ini didasarkan pada teori tipe modal kontekstual dan teori tipe gradual
Lingkungan Hazel dan model eksekusi
- Hazel sedang diimplementasikan sebagai lingkungan pemrograman berbasis web untuk bahasa fungsional yang mirip Elm/ML
- Semua program tidak lengkap yang dapat dibuat dengan bahasa aksi penyuntingan Hazel didefinisikan secara statis dan dinamis
- Dapat memiliki tipe yang tidak lengkap
- Saat dijalankan, dapat menghasilkan hasil yang tidak lengkap
- Berkat karakteristik ini, Hazel digunakan sebagai platform untuk riset lingkungan pemrograman masa depan dan pendidikan pemrograman
Visi riset dan materi terkait
- Toward Semantic Foundations for Program Editors: visi riset tentang fondasi semantik untuk editor program
- Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine: visi lingkungan komputasi live, dapat dikomposisikan, dan kolaboratif untuk ilmu komputasi berskala besar
- Presentasi terkait Hazel dikumpulkan dalam YouTube playlist of Hazel-related talks
- Demo terbaru dapat dilihat dalam presentasi Topos Institute
Riset terbaru dan alur publikasi
- Pada 2025, riset di sekitar Hazel dipresentasikan di beberapa konferensi
- Incremental Bidirectional Typing via Order Maintenance: riset yang membuat pemeriksaan tipe dua arah menjadi inkremental dengan meminjam teknik dari sistem layout browser, dan menerima OOPSLA 2025 Distinguished Paper Award
- Syntactic Completions with Material Obligations: teori dan implementasi untuk memperbaiki syntax error dengan memanfaatkan kewajiban yang diwujudkan secara visual dalam sistem Tylr
- A FAIR Case for a Live Computational Commons: usulan untuk menata ulang pekerjaan ilmiah di sekitar lingkungan pemrograman live berskala besar
- Decomposable Type Highlighting for Bidirectional Type and Cast Systems: riset UI untuk men-debug error tipe statis dan dinamis di Hazel
- Hazel Deriver: A Live Editor for Constructing Rule-Based Derivations: tool edukasi untuk menyusun proses derivasi bergaya deduksi natural
- Pada 2024, pemulihan type error, integrasi LLM, pembelajaran pembuktian, dan lingkungan komputasi ilmu iklim berlanjut sebagai topik utama
- Total Type Error Localization and Recovery with Holes membahas pelokalan dan pemulihan error pada program dengan tipe yang salah, dan menerima POPL 2024 Distinguished Paper Award
- Statically Contextualizing Large Language Models with Typed Holes adalah pekerjaan yang menggabungkan language server dan large language model untuk meningkatkan kinerja penyelesaian kode AI secara signifikan
- NSF mendanai proyek riset untuk mengubah Hazel menjadi proof assistant untuk kelas
- Riset dari 2017 hingga 2023 secara bertahap mengembangkan komputasi dasar, structure editing, evaluasi live, dan fitur bantuan edukasi Hazel
- Hazelnut: A Bidirectionally Typed Structure Editor Calculus mendefinisikan kalkulus aksi penyuntingan yang menyisipkan typed holes secara otomatis
- Live Functional Programming with Typed Holes mengembangkan semantik operasional yang kaya untuk ekspresi dengan typed holes
- Program Sketching with Live Bidirectional Evaluation membahas Smyth, komponen dasar Hazel Assistant
- Live Pattern Matching with Typed Holes membahas inferensi program dengan pattern holes, dan menerima OOPSLA 2023 Distinguished Paper Award
Penggunaan dan kontribusi
- Hazel menyediakan build web yang bisa dicoba langsung
- Kode sumbernya tersedia publik di GitHub
- Hazel adalah proyek riset open source yang dipimpin oleh Future of Programming Lab (FP Lab) di University of Michigan
- Untuk kontribusi atau pertanyaan, Anda dapat menghubungi pemimpin tim, Cyrus Omar
Belum ada komentar.