প্রকারের ক্লাসগুলি এই মডেলটিতে কীভাবে মাপসই হয়?
সংক্ষিপ্ত উত্তর: তারা না।
আপনি যখনই কোনও ভাষায় জবরদস্তি, টাইপ ক্লাস, বা অ্যাড-হক পলিমারফিজমের জন্য অন্যান্য প্রক্রিয়া প্রবর্তন করেন, তখন আপনার মুখোমুখি মূল নকশা ইস্যুটি সম্মিলন ।
মূলত, আপনাকে তা নিশ্চিত করতে হবে যে টাইপক্লাস রেজোলিউশনটি ডিটারমিনিস্টিক, যাতে একটি ভাল টাইপযুক্ত প্রোগ্রামটির একক ব্যাখ্যা থাকে। উদাহরণস্বরূপ, আপনি যদি একই সুযোগে একই ধরণের জন্য একাধিক উদাহরণ দিতে পারেন তবে আপনি সম্ভবত অস্পষ্ট প্রোগ্রামগুলি লিখতে পারেন:
class Blah a where
blah : a -> String
instance Blah T where
blah _ = "Hello"
instance Blah T where
blah _ = "Goodbye"
v :: T = ...
main :: IO ()
main = print (blah v) -- does this print "Hello" or "Goodbye"?
সংকলক যে উদাহরণটি দেয় তার উপর নির্ভর করে উভয়টি blah v
সমান হতে পারে "Hello"
বা হয় "Goodbye"
। সুতরাং, কোনও প্রোগ্রামের অর্থ প্রোগ্রামের বাক্য গঠন দ্বারা সম্পূর্ণ নির্ধারিত হবে না, বরং সংকলক যে স্বেচ্ছাসেবী পছন্দগুলি দ্বারা প্রভাবিত হতে পারে।
এই সমস্যার জন্য হ্যাসেলের সমাধান হ'ল প্রতিটি টাইপক্লাসের জন্য প্রতিটি ধরণের সর্বাধিক একটি ইভেন্ট থাকা প্রয়োজন। এটি নিশ্চিত করার জন্য, এটি কেবলমাত্র শীর্ষ স্তরে উদাহরণস্বরূপ ঘোষণাগুলির অনুমতি দেয় এবং তদ্ব্যতীত সমস্ত ঘোষণা বিশ্বব্যাপী দৃশ্যমান করে। এইভাবে, সংমিশ্রণকারী একটি অস্পষ্ট উদাহরণ স্বীকৃতি ঘোষণা করা থাকলে সর্বদা একটি ত্রুটি সংকেত দিতে পারে।
তবে বিশ্বব্যাপী দৃশ্যমান ঘোষণাগুলি করা শব্দার্থবিজ্ঞানের গঠনতন্ত্রকে ভেঙে দেয়। আপনি পুনরুদ্ধার করতে যা করতে পারেন তা হ'ল প্রোগ্রামিং ভাষার জন্য একটি বিস্তৃত শব্দার্থবিদ্যা - যা আপনি হ্যাস্কেল প্রোগ্রামগুলিকে কীভাবে আরও ভাল আচরণের, আরও গঠনমূলক ভাষায় অনুবাদ করতে পারবেন তা দেখাতে পারেন।
এটি প্রকৃতপক্ষে আপনাকে টাইপক্ল্যাসগুলি সংকলনের একটি উপায় দেয় - সাধারণত এটি হাস্কেল চেনাশোনাগুলিতে "প্রমাণ অনুবাদ" বা "অভিধান-পাসিং রূপান্তর" নামে পরিচিত এবং বেশিরভাগ হাস্কেল সংকলকগুলির প্রাথমিক পর্যায়ে এটি।
প্রোগ্রামিং ভাষার নকশা খাঁটি টাইপ তত্ত্ব থেকে কীভাবে পৃথক হয় তারও টাইপক্লাসগুলি একটি ভাল উদাহরণ। টাইপক্লাসগুলি সত্যিই দুর্দান্ত একটি ভাষা বৈশিষ্ট্য, তবে তারা প্রুফ-তাত্ত্বিক দৃষ্টিভঙ্গি থেকে বেশ খারাপ আচরণ করে। (এ কারণেই আগদায় মোটেও টাইপক্ল্যাস নেই এবং কোক কেন তাদের এটিকে তাঁর বৌদ্ধিক অনুক্রমের পরিকাঠামোর একটি অংশ করে তোলে))