- Bahasa kecil yang berjalan di atas runtime Go sambil menggunakan sintaks bergaya Rust, menggabungkan keunggulan kedua bahasa
- Struktur yang memperkuat keamanan dan daya ekspresif melalui algebraic data type, pattern matching, sistem tipe Hindley-Milner, dan immutability secara default
- Menjamin interoperabilitas dengan ekosistem Go melalui import langsung paket Go, operator pipeline, blok try, dan konkurensi berbasis task
- Meningkatkan pengalaman pengembang dan stabilitas kode dengan deteksi kesalahan saat compile time, pesan diagnostik yang jelas, dan dukungan LSP
- Poin utamanya adalah kode Lisette diubah menjadi kode Go yang jelas dan mudah dibaca, sehingga bisa terintegrasi secara alami dengan proyek Go yang sudah ada
Gambaran umum Lisette
- Lisette adalah bahasa kecil berbasis sintaks Rust yang dikompilasi ke runtime Go
- Memiliki karakteristik seperti algebraic data type, pattern matching, tanpa nil, sistem tipe Hindley-Milner, immutability secara default, dan interoperabilitas dengan ekosistem Go
- Dapat diinstal dengan perintah
cargo install lisette, dan bisa langsung mengimpor serta menggunakan paket Go seperti fmt, io, os
Sintaks yang familier
- Memiliki struktur sintaks yang mirip Rust
- Mendukung pattern matching melalui
enum dan match
- Definisi method dimungkinkan dengan blok
struct dan impl
- Sebagai bahasa yang berorientasi ekspresi,
if, let, dan blok semuanya mengembalikan nilai
- Mendukung chaining dan lambda sehingga pemrosesan environment variable atau manipulasi string bisa ditulis dengan ringkas
- Mendukung interface dan generic, dan memungkinkan penulisan fungsi generik melalui definisi
interface serta constraint T: Trait
- Tipe
Option dapat ditangani secara ringkas dengan sintaks if let dan let else
Keamanan
-
Mendeteksi kesalahan yang dapat terjadi di runtime Go saat compile time
- Jika tidak semua pola ditangani dalam pernyataan
match, akan muncul error
nil tidak bisa digunakan, nilai yang hilang direpresentasikan dengan Option<T>
- Jika nilai kembalian Result diabaikan, akan muncul peringatan
- Muncul peringatan jika tipe privat diekspos dalam API publik
- Akan terjadi error jika variabel immutable diteruskan sebagai argumen yang bisa diubah
- Jika field struct terlewat, akan terjadi compile error
- Pesan diagnostik menyertakan lokasi kode yang spesifik dan saran perbaikan
- Dapat digunakan di editor utama seperti VSCode, Neovim, dan Zed dengan dukungan LSP(Language Server Protocol)
Kegunaan
- Dirancang dengan fokus pada interoperabilitas dengan Go
- Operator pipeline(
|>) memungkinkan chaining fungsi ditulis dengan ringkas
- Blok try menyederhanakan propagasi error
- Konkurensi diimplementasikan menggunakan
task dan Channel, mirip dengan goroutine di Go
- Dengan atribut serialisasi, nama field JSON, penghilangan field, konversi string, dan tag validasi dapat ditentukan
- Menyediakan blok
recover untuk pemulihan panic, dan penanganan error yang aman dengan tipe Result
- Mendukung sintaks
defer untuk menjamin pembersihan resource atau rollback transaksi
Hasil kompilasi yang transparan
- Kode Lisette diubah menjadi kode Go yang jelas dan mudah dibaca
- Tipe
Option dan Result masing-masing diubah menjadi struct lisette.Option dan lisette.Result
- Sintaks
match diubah menjadi pernyataan kondisional Go untuk menangani tiap cabang
- Operator
? secara internal diganti dengan kode pemeriksaan Result
- Sebagai contoh, fungsi
classify menerima Option<int> lalu diubah menjadi pernyataan kondisional eksplisit di Go, sedangkan fungsi combine diubah menjadi kode Go yang memeriksa Result
Informasi tambahan
Belum ada komentar.