Salah satu fitur yang saya lewatkan dari bahasa fungsional adalah gagasan bahwa operator hanyalah fungsi, jadi menambahkan operator khusus seringkali sesederhana menambahkan fungsi. Banyak bahasa prosedural memungkinkan operator kelebihan, jadi dalam beberapa hal operator masih berfungsi (ini sangat benar di D di mana operator dilewatkan sebagai string dalam parameter templat).
Tampaknya di mana operator kelebihan muatan diperbolehkan, seringkali sepele untuk menambahkan operator kustom tambahan. Saya menemukan posting blog ini , yang berpendapat bahwa operator kustom tidak bekerja dengan baik dengan notasi infiks karena aturan diutamakan, tetapi penulis memberikan beberapa solusi untuk masalah ini.
Saya melihat sekeliling dan tidak dapat menemukan bahasa prosedural yang mendukung operator khusus dalam bahasa tersebut. Ada peretasan (seperti makro di C ++), tapi itu hampir tidak sama dengan dukungan bahasa.
Karena fitur ini cukup sepele untuk diterapkan, mengapa tidak lebih umum?
Saya mengerti bahwa ini dapat menyebabkan beberapa kode jelek, tetapi itu tidak menghentikan desainer bahasa di masa lalu dari menambahkan fitur berguna yang dapat dengan mudah disalahgunakan (makro, operator ternary, pointer tidak aman).
Kasus penggunaan aktual:
- Terapkan operator yang hilang (mis. Lua tidak memiliki operator bitwise)
- Mimic D's
~
(array concatenation) - DSL
- Gunakan
|
sebagai gula sintaks gaya pipa Unix (menggunakan coroutine / generator)
Saya juga tertarik pada bahasa yang melakukan memungkinkan operator kustom, tapi aku lebih tertarik pada mengapa hal itu telah dikecualikan. Saya berpikir untuk membuat bahasa scripting untuk menambahkan operator yang ditentukan pengguna, tetapi berhenti sendiri ketika saya menyadari bahwa saya belum melihatnya di mana pun, jadi mungkin ada alasan bagus mengapa perancang bahasa lebih pintar daripada saya tidak mengizinkannya.