আমি আমার ভাষা ফেলিক্সে সাধারণ ওভারলোডিং এবং মাল্টি-টাইপ টাইপ-ক্লাস সরবরাহ করতে পছন্দ করেছি।
আমি (উন্মুক্ত) ওভারলোডিং অপরিহার্য বলে বিবেচনা করি, বিশেষত এমন একটি ভাষায় যা প্রচুর সংখ্যার ধরণের (ফেলিক্সের সমস্ত সি এর সংখ্যাসূচক প্রকারের) থাকে। তবে সি ++ এর বিপরীতে যা টেমপ্লেটগুলি নির্ভর করে ওভারলোডিংকে গালাগাল করে তার উপর নির্ভর করে, ফেলিক্স পলিমারফিজমটি প্যারামিমেট্রিক: সি ++ তে টেমপ্লেটগুলির জন্য আপনার ওভারলোডিং প্রয়োজন কারণ সি ++ তে টেমপ্লেটগুলি খারাপভাবে ডিজাইন করা হয়েছে।
টাইপ ক্লাস ফেলিক্সেও সরবরাহ করা হয়। যারা সি ++ জানে তবে হাস্কেলকে কুঁচকে না, যারা এটিকে ওভারলোডিং হিসাবে বর্ণনা করে তাদের উপেক্ষা করুন। এটি দূর থেকে ওভারলোডিংয়ের মতো নয়, বরং এটি টেম্পলেট বিশেষায়নের মতো: আপনি কোনও টেম্পলেট ঘোষণা করেন যা আপনি প্রয়োগ করেন না, তারপরে আপনার প্রয়োজন মতো নির্দিষ্ট কেসগুলির জন্য বাস্তবায়ন সরবরাহ করুন। টাইপিংটি প্যারামেট্রিকভাবে পলিমারফিক হয়, বাস্তবায়নটি এডহক ইনস্ট্যান্টেশন দ্বারা হয় তবে এটি নিরবচ্ছিন্ন হওয়ার উদ্দেশ্যে নয়: এটি লক্ষ্যবস্তু শব্দার্থক প্রয়োগ করতে হবে।
হাস্কেল (এবং সি ++) এ আপনি শব্দার্থবিজ্ঞানের কথা বলতে পারবেন না। সি ++ এ "ধারণাগুলি" ধারণাটি প্রায় শব্দার্থবিজ্ঞানের আনুমানিক একটি প্রচেষ্টা। ফেলিক্সে, আপনি axioms, হ্রাস, lemmas এবং উপপাদ্য দিয়ে উদ্দেশ্য প্রায় অনুমান করতে পারেন।
ফেলিক্সের মতো ভাল মূল নীতিমালা ভাষায় (ওপেন) ওভারলোডিংয়ের প্রধান এবং একমাত্র সুবিধা হ'ল প্রোগ্রাম লেখক এবং কোড পর্যালোচক উভয়ের জন্য গ্রন্থাগারের ফাংশন নামগুলি মনে রাখা সহজ করে তোলে।
ওভারলোডিংয়ের প্রাথমিক অসুবিধা হ'ল এটি বাস্তবায়নের জন্য প্রয়োজনীয় জটিল অ্যালগরিদম। এটি টাইপ আনফারেন্স সহ খুব ভাল বসে না: যদিও দুটি সম্পূর্ণরূপে একচেটিয়া নয় তবে উভয়কে করার জন্য অ্যালগরিদম যথেষ্ট জটিল তবে প্রোগ্রামার সম্ভবত ফলাফলগুলি ভবিষ্যদ্বাণী করতে সক্ষম হবেন না।
সি ++ এ এটিও একটি সমস্যা কারণ এটির একটি opালু মিলে যাওয়া অ্যালগরিদম রয়েছে এবং এটি স্বয়ংক্রিয় প্রকারের রূপান্তরকেও সমর্থন করে: ফেলিক্স I এ একটি সঠিক মিল এবং কোনও স্বয়ংক্রিয় ধরণের রূপান্তর প্রয়োজন না করে এই সমস্যাটি "স্থির" করে।
সুতরাং আপনার কাছে আমার একটি পছন্দ আছে: ওভারলোডিং বা অনুমান টাইপ করুন। অনুগ্রহটি সুন্দর, তবে দ্বন্দ্বগুলি সঠিকভাবে নির্ধারণ করে এমন পদ্ধতিতে এটি প্রয়োগ করা খুব কঠিন। উদাহরণস্বরূপ, ওক্যামল আপনাকে জানায় যে এটি কোথা থেকে কোনও বিরোধকে সনাক্ত করে, তবে এটি কোথা থেকে প্রত্যাশিত ধরণের অনুমান করে।
ওভারলোডিং আরও ভাল নয়, আপনার কাছে এমন একটি মানের সংকলকও রয়েছে যা আপনাকে সমস্ত প্রার্থীকে বলার চেষ্টা করে, প্রার্থীরা বহুকর্মী কিনা তা পড়তে পারা কঠিন এবং এটি সি ++ টেমপ্লেট হ্যাকারি হলেও আরও খারাপ।