Python cukup terkenal menggunakan lekukan untuk secara sintaksis mendefinisikan blok kode. (Lihat pernyataan majemuk dalam Referensi Bahasa Python). Setelah bertahun-tahun menggunakan Python saya masih tertarik dan sangat menyukai fitur sintaks ini.
Tapi saya bertanya-tanya: Terlepas dari Python dan bahasa "pendahulunya" (*) ABC bahasa pemrograman lain mana yang menggunakan lekukan untuk definisi blok kode ? Blok kode di sini berarti "beberapa pernyataan yang dalam beberapa cara diperlakukan sebagai satu komponen".
Saya terutama tertarik pada bahasa pemrograman praktis , tetapi bahasa esoteris mungkin layak disebut juga.
(*): " Pendahulu " adalah pilihan kata saya yang secara default diketahui di sini lebih baik. Guido van Rossum, pencipta Python, menggambarkan hubungan antara Python dan ABC mengenai indentasi dalam sebuah wawancara seperti ini: " Pilihan indentasi untuk pengelompokan bukanlah konsep baru dalam Python; Saya mewarisi ini dari ABC. "
Jawaban:
Wikipedia memiliki daftar bahasa yang luas yang menggunakan aturan off-side 1 :
1: Aku belum pernah mendengar istilah ini sebelumnya.
sumber
Ada: Elm , Haskell , pendahulunya Miranda dan pendahulunya ISWIM , YAML mana ruang sangat penting untuk sintaks dan tab dilarang, OCCAM , kopi naskah dan Cokescript keduanya bahasa untuk kompiler bahasa dengan JavaScript sebagai target dan esoteris Spasi Putih .
Ada juga Agda - teorema teorema interaktif, yang mungkin bukan yang ada dalam pikiran Anda, tetapi lexernya sangat sensitif terhadap ruang putih.
Makefile , yang mengumpulkan target dengan tujuan berbasis tab.
sumber
(x-y)
tidak(x - y)
) bahkan jika itu mungkin tidak "praktis" cukup untuk OP.Jadikan sesuai dengan deskripsi Anda, meskipun itu mungkin tidak sesuai dengan yang Anda pikirkan, dengan sintaks dan kekuatannya yang terbatas.
Ini terkenal menunjukkan blok kode ( resep ) dengan bentuk spasi khusus: satu karakter tab. Cara-cara alternatif tersedia (mis. GNU Make support menggunakan karakter alternatif ), tetapi jarang digunakan dalam praktik.
Contoh lain yang ada di ujung adalah buku pedoman Ansible . Mereka ditentukan dalam YAML , yang sangat bergantung pada indentasi. YAML bukan bahasa pemrograman, tetapi buku pedoman yang dimungkinkan dapat dianggap sebagai program khusus domain.
sumber