ফাংশনাল ভাষাগুলি থেকে আমি যে বৈশিষ্ট্যটি মিস করি তা হ'ল ধারণাটি যে অপারেটরগুলি কেবল ফাংশন, তাই একটি কাস্টম অপারেটর যুক্ত করা একটি ফাংশন যুক্ত করার মতো প্রায়শই সহজ। অনেকগুলি প্রক্রিয়াগত ভাষা অপারেটরকে ওভারলোডের অনুমতি দেয়, তাই কিছু দিক থেকে অপারেটরগুলি এখনও ফাংশনগুলি (এটি ডি তে খুব সত্য যেখানে অপারেটরটি একটি টেম্পলেট প্যারামিটারের স্ট্রিং হিসাবে পাস হয়)।
দেখে মনে হচ্ছে যেখানে অপারেটর ওভারলোডিং অনুমোদিত, অতিরিক্ত, কাস্টম অপারেটর যুক্ত করা প্রায়শই ক্ষুদ্র। আমি এই ব্লগ পোস্টটি পেয়েছি , যা যুক্তি দেয় যে কাস্টম অপারেটররা অগ্রাধিকার নিয়মের কারণে ইনফিক্স নোটেশনের সাথে সুন্দরভাবে কাজ করে না, তবে লেখক এই সমস্যার বেশ কয়েকটি সমাধান দিয়েছেন।
আমি চারপাশে দেখেছি এবং ভাষাতে কাস্টম অপারেটরদের সমর্থন করে এমন কোনও পদ্ধতিগত ভাষা খুঁজে পেলাম না। হ্যাকগুলি রয়েছে (যেমন সি ++ তে ম্যাক্রোগুলি) তবে এটি ভাষা সমর্থন হিসাবে খুব কমই।
যেহেতু এই বৈশিষ্ট্যটি প্রয়োগ করা বেশ তুচ্ছ, তাই কেন এটি বেশি সাধারণ নয়?
আমি বুঝতে পারি যে এটি কিছু কুরুচিপূর্ণ কোডের দিকে নিয়ে যেতে পারে, তবে অতীতে ভাষা ডিজাইনাররা সহজে ব্যবহার করা যেতে পারে এমন দরকারী বৈশিষ্ট্যগুলি যোগ করা থেকে বিরত রাখেনি (ম্যাক্রোস, টার্নারি অপারেটর, অনিরাপদ পয়েন্টার)।
আসল ব্যবহারের কেস:
- অনুপস্থিত অপারেটরগুলি প্রয়োগ করুন (যেমন লুয়ায় বিটওয়াইস অপারেটর নেই)
- মিমিক ডি এর
~
(অ্যারে কনটেন্টেশন) - DSLs
|
ইউনিক্স পাইপ-স্টাইল সিনট্যাক্স চিনির হিসাবে ব্যবহার করুন (করোটিন / জেনারেটর ব্যবহার করে)
আমিও ভাষা আগ্রহী না কাস্টম অপারেটরদের অনুমতি, কিন্তু আমি আগ্রহী নই কেন এটা বাদ দেওয়া হয়েছে। আমি ব্যবহারকারী-সংজ্ঞায়িত অপারেটরদের যুক্ত করার জন্য একটি স্ক্রিপ্টিং ভাষার কাঁটাচামচ করার কথা ভেবেছিলাম, কিন্তু আমি যখন বুঝতে পেরেছিলাম যে আমি এটি কোথাও দেখিনি, তখন ভাষা ডিজাইনাররা আমার চেয়ে বেশি স্মার্ট হওয়ার কারণ সম্ভবত এটিই রয়েছে good