প্রকার শ্রেণীর একটি গাণিতিক (শ্রেণিবদ্ধ) বর্ণনা


14

একটি কার্যকরী ভাষা এমন একটি বিভাগ হিসাবে দেখা যায় যেখানে এর বস্তুগুলি তাদের মধ্যে প্রকারভেদ এবং রূপগুলির মধ্যে ফাংশন।

প্রকারের ক্লাসগুলি এই মডেলটিতে কীভাবে মাপসই হয়?

আমি ধরে নিলাম আমাদের কেবল সেই বাস্তবায়নগুলি বিবেচনা করা উচিত যা বেশিরভাগ ধরণের শ্রেণীর সীমাবদ্ধতা পূরণ করে, তবে তা হাস্কেলের মধ্যে প্রকাশিত হয় না। উদাহরণস্বরূপ, আমাদের কেবল সেইগুলির বাস্তবায়নগুলি বিবেচনা করা উচিত Functorযার জন্য fmap id ≡ idএবং fmap f . fmap g ≡ fmap (f . g)

বা টাইপ শ্রেণীর জন্য অন্য কোনও তাত্ত্বিক ভিত্তি রয়েছে (উদাহরণস্বরূপ টাইপড ল্যাম্বদা ক্যালকুলির উপর ভিত্তি করে)?


1
আপনি ঠিক কী মডেল চান তার বিষয়ে আপনি আরও স্পষ্ট হতে চাইতে পারেন। আপনি যদি এমন কিছু চান যা ওপেন ওয়ার্ল্ড অনুমান, উদাহরণস্বরূপ সমাধানের আচরণ, বিভিন্ন জিএইচসি এক্সটেনশনের মিথস্ক্রিয়া, এবং সি, কে আদর্শভাবে বর্ণিত সংস্করণের চেয়ে আরও জটিলভাবে বর্ণনা করতে পারে। একইভাবে, নোট করুন যে হাস্কের সাথে আলোচনা করার সময় প্রায়শই প্রায়শই উপেক্ষা করা হয়।
সিএ ম্যাকক্যান

4
প্রকারের ক্লাসগুলি স্বাক্ষর হিসাবে বিবেচনা করা যেতে পারে (সর্বজনীন বীজগণিত অর্থে)। একই স্বাক্ষর (একই ধরণের শ্রেণীর উপাদান) ভাগ করে নেওয়ার সমস্ত সত্তার সংগ্রহ বিভিন্ন
ডেভ ক্লার্ক

1
@ ডেভ ক্লার্ক: উচ্চতর ধরণের ক্ষেত্রে কীভাবে ধরণের শ্রেণি বর্ণনা করা যায় তা আমার কাছে তাত্ক্ষণিকভাবে স্পষ্ট নয় তবে আমি সর্বজনীন বীজগণিতের সাথে ভয়াবহভাবে পরিচিত নই এবং আপনার মনে যে চিঠিপত্রের কথা রয়েছে তা ভুল বোঝাবুঝি করছি ...
সিএ ম্যাকক্যান

1
@ ক্যাম্যাক্যান: আমি নিশ্চিত হতে পারি না যে চিঠিপত্রটি কতদূর যায়। এটি অবশ্যই একটি ভাল সূচনা পয়েন্ট মনে হয়েছিল।
ডেভ ক্লার্ক

2
@ ক্যামসিএকএন: আপনার বীজগণিত সংজ্ঞায়িত বেসের বিভাগটি কেবল পরিবর্তন করুন: সংখ্যার মতো মৌলিক ধরণের শ্রেণিগুলি হ্যাশেল প্রকারের (বা এইচএসসি বিভাগের বিষয়বস্তু) বিভাগের উপর স্বাক্ষর, প্রকারের নির্মাণকারীর ওপরে টাইপ শ্রেণিগুলি ফান্টেক্টারের বিভাগের তুলনায় বীজগণিত হাস্ক থেকে হাস্ক পর্যন্ত। নোট করুন যে সার্বজনীন বীজগণিত বিভাগ তত্ত্বের বীজগণিতের ধারণা দ্বারা সম্পূর্ণরূপে গ্রাহ্য হয়েছে। এছাড়াও: ডেভ: আপনার মন্তব্যটি একটি উত্তরে পরিণত করা উচিত।
কোডি

উত্তর:


18

প্রকারের ক্লাসগুলি এই মডেলটিতে কীভাবে মাপসই হয়?

সংক্ষিপ্ত উত্তর: তারা না।

আপনি যখনই কোনও ভাষায় জবরদস্তি, টাইপ ক্লাস, বা অ্যাড-হক পলিমারফিজমের জন্য অন্যান্য প্রক্রিয়া প্রবর্তন করেন, তখন আপনার মুখোমুখি মূল নকশা ইস্যুটি সম্মিলন

মূলত, আপনাকে তা নিশ্চিত করতে হবে যে টাইপক্লাস রেজোলিউশনটি ডিটারমিনিস্টিক, যাতে একটি ভাল টাইপযুক্ত প্রোগ্রামটির একক ব্যাখ্যা থাকে। উদাহরণস্বরূপ, আপনি যদি একই সুযোগে একই ধরণের জন্য একাধিক উদাহরণ দিতে পারেন তবে আপনি সম্ভবত অস্পষ্ট প্রোগ্রামগুলি লিখতে পারেন:

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"। সুতরাং, কোনও প্রোগ্রামের অর্থ প্রোগ্রামের বাক্য গঠন দ্বারা সম্পূর্ণ নির্ধারিত হবে না, বরং সংকলক যে স্বেচ্ছাসেবী পছন্দগুলি দ্বারা প্রভাবিত হতে পারে।

এই সমস্যার জন্য হ্যাসেলের সমাধান হ'ল প্রতিটি টাইপক্লাসের জন্য প্রতিটি ধরণের সর্বাধিক একটি ইভেন্ট থাকা প্রয়োজন। এটি নিশ্চিত করার জন্য, এটি কেবলমাত্র শীর্ষ স্তরে উদাহরণস্বরূপ ঘোষণাগুলির অনুমতি দেয় এবং তদ্ব্যতীত সমস্ত ঘোষণা বিশ্বব্যাপী দৃশ্যমান করে। এইভাবে, সংমিশ্রণকারী একটি অস্পষ্ট উদাহরণ স্বীকৃতি ঘোষণা করা থাকলে সর্বদা একটি ত্রুটি সংকেত দিতে পারে।

তবে বিশ্বব্যাপী দৃশ্যমান ঘোষণাগুলি করা শব্দার্থবিজ্ঞানের গঠনতন্ত্রকে ভেঙে দেয়। আপনি পুনরুদ্ধার করতে যা করতে পারেন তা হ'ল প্রোগ্রামিং ভাষার জন্য একটি বিস্তৃত শব্দার্থবিদ্যা - যা আপনি হ্যাস্কেল প্রোগ্রামগুলিকে কীভাবে আরও ভাল আচরণের, আরও গঠনমূলক ভাষায় অনুবাদ করতে পারবেন তা দেখাতে পারেন।

এটি প্রকৃতপক্ষে আপনাকে টাইপক্ল্যাসগুলি সংকলনের একটি উপায় দেয় - সাধারণত এটি হাস্কেল চেনাশোনাগুলিতে "প্রমাণ অনুবাদ" বা "অভিধান-পাসিং রূপান্তর" নামে পরিচিত এবং বেশিরভাগ হাস্কেল সংকলকগুলির প্রাথমিক পর্যায়ে এটি।

প্রোগ্রামিং ভাষার নকশা খাঁটি টাইপ তত্ত্ব থেকে কীভাবে পৃথক হয় তারও টাইপক্লাসগুলি একটি ভাল উদাহরণ। টাইপক্লাসগুলি সত্যিই দুর্দান্ত একটি ভাষা বৈশিষ্ট্য, তবে তারা প্রুফ-তাত্ত্বিক দৃষ্টিভঙ্গি থেকে বেশ খারাপ আচরণ করে। (এ কারণেই আগদায় মোটেও টাইপক্ল্যাস নেই এবং কোক কেন তাদের এটিকে তাঁর বৌদ্ধিক অনুক্রমের পরিকাঠামোর একটি অংশ করে তোলে))


প্রার্থী রানার আপ যে কি করে denotational শব্দার্থবিদ্যা iyswim আছে?
ওহাদ কামার

1
হায় হায় আমার কোন ধারণা নেই।
নীল কৃষ্ণস্বামী

এটি কি একটি অতিরিক্ত প্রশ্ন যোগ্যতা?
ওহাদ কামার

@ নীলকৃষ্ণস্বামী: এমএল মডিউলগুলি এতে কীভাবে খাপ খায় সে সম্পর্কে আপনার কি ধারণা আছে? এবং আগদা মডিউলগুলি সম্পর্কে (যা আমাকে কেউ "প্রথম শ্রেণির" বলে উল্লেখ করেছে)?
লিই

1
@ লিঃ: এমএল মডিউল এবং আগদার রেকর্ডগুলি অনেক বেশি ভাল- আচরণযুক্ত , তবে একটি মন্তব্যে ব্যাখ্যা করা খুব জটিল - তাদের সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করুন, এবং আমি (বা অন্য কেউ) ব্যাখ্যা করব।
নীল কৃষ্ণস্বামী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.