İşlevsel dillerden özlediğim bir özellik, işleçlerin yalnızca işlevler olduğu fikridir, bu nedenle özel bir işleç eklemek, genellikle bir işlev eklemek kadar basittir. Prosedürel dillerin birçoğu operatörün aşırı yüklenmesine izin verir, bu nedenle bazı durumlarda operatörler hala işlev görür (bu, operatörün bir şablon parametresinde bir dize olarak geçirildiği D için çok doğrudur ).
Operatör aşırı yüklenmesine izin verilen yerlerde, ek, özel operatörler eklemek genellikle önemsiz görünmektedir. Özel operatörlerin öncelikli kurallar nedeniyle ek gösterimi ile iyi çalışmadıklarını iddia eden bu blog gönderisini buldum , ancak yazar bu soruna birkaç çözüm getiriyor.
Etrafıma baktım ve dilde özel operatörleri destekleyen hiçbir prosedürel dil bulamadım. Hack'ler (C ++ 'daki makrolar gibi) var, ancak bu dil desteği ile neredeyse aynı değil.
Bu özelliğin uygulanması oldukça önemsiz olduğu için neden daha yaygın değil?
Bazı çirkin kodlara yol açabileceğini anlıyorum, ancak geçmişte dil tasarımcılarının kolayca kötüye kullanılabilecek yararlı özellikler eklemesini engellemedi (makrolar, üçlü operatör, güvensiz işaretçiler).
Gerçek kullanım durumları:
- Eksik operatörleri uygulayın (örneğin Lua'da bitsel operatörler yok)
- Mimik D'ler
~
(dizi birleştirme) - DSL'ler
|
Unix boru tarzı sözdizimi şekeri olarak kullanın (koroinler / jeneratörler kullanarak)
Ben de dillere ilgileniyorum yapmak özel operatörleri izin ama daha çok ilgileniyorum neden o dışlanmıştır. Kullanıcı tanımlı operatörler eklemek için bir betik dili oluşturmayı düşündüm, ancak bir yerde görmediğimi fark ettiğimde kendimi durdurdum, bu nedenle dil tasarımcılarının benden daha akıllıca olmasına izin vermemesinin iyi bir nedeni olabilir.