সারি পলিমারফিজম এবং সাব টাইপিংয়ের মধ্যে প্রধান পার্থক্যগুলি কী


20

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

আমি এই ব্লগ পোস্ট জুড়ে এসেছি , কিন্তু এটি আমাকে আগের চেয়ে আরও প্রশ্ন দিয়ে যায় leaves উদাহরণস্বরূপ, এটি দাবি করে যে সাবটাইপিং সহ একটি সিস্টেম এক প্রকারকে বরাদ্দ করবে, অন্যদিকে সারি টাইপ সহ একটি সিস্টেম অন্যটিকে বরাদ্দ করবে; তার অর্থ কি এই যে, যদি এমন কোনও সিস্টেম যা পূর্বনির্ধারিতভাবে সাবটাইপিং থাকে "সারি টাইপিং" প্রকারটি বরাদ্দ করে, তবে এটি ভুলভাবে পরিকল্পনা করে?

আমি যে প্রধান পার্থক্যটি দেখছি তা হ'ল সারি টাইপিংয়ের ফলে আর্গুমেন্টের প্রকারগুলি সারিবদ্ধ করা সম্ভব হয় (এটি হল একটি দুটি আর্গুমেন্ট ফাংশন লিখুন যা কেবলমাত্র aতার যুক্তিগুলির ক্ষেত্রের সাথেই উদ্বেগ প্রকাশ করে , তবে তার যুক্তিগুলির একই ক্ষেত্র থাকতে হবে) ।

উত্তর:


10

সাব টাইপিং এক ধরণের এক্সপ্রেশন দিয়ে বলেছে যে আমরা এটিকে অন্য টাইপও দিতে পারি। আমরা বলি পূর্ববর্তীটি পরবর্তীকালের একটি সাব টাইপ এবং এই সাব টাইপিং সম্পর্কটি আরও অনেক সম্পর্ককে প্ররোচিত করে। প্রতীকগুলিতে,

ΓE:SS<:TΓE:T

এখানে মূল জিনিসটি (এবং যে কারণে আমি এটি পর্যালোচনা করেছি) তা হ'ল একই অভিব্যক্তিটি দুটি ভিন্ন ধরণের দেওয়া হয়। অন্তর্নিহিত প্রকারের ইনস্ট্যান্টিয়েশন সহ প্যারামেট্রিকভাবে বহুবর্ষীয় ভাষায় আমাদের নিম্নলিখিত সাব-টাইপিং সম্পর্ক রয়েছে: ora সব ধরণের । টাইপ ইনস্ট্যান্টেশন যদি সিস্টেম এফের মতো স্পষ্ট হয় তবে এই সাব টাইপিং সম্পর্কটি ধরে রাখে না।টি(α.τ)<:τ[T/α]T

কিছুটা হলেও, আমরা বলতে পারি যে সারি প্রকারের সাথে একটি ভাষা রয়েছে (সাধারণত) ফর্মটির বৃদ্ধি প্রদান যেখানে । যাইহোক, আসলে এটি যেভাবে পরিচালিত হয় তা হ'ল ধরণের সমতার ধারণা (যেমন একীকরণ) যাতে অর্থাৎ তারা একত্রিত হয়। এই ক্ষেত্রে, সাব টাইপ সম্পর্কটি তুচ্ছ এক।{1:A,2:B}<:{2:B,1:A}{1:A,2:B}{2:B,1:A}{ 1 : , 2 : বি } = { 2 : বি , 1 : } টি < : টিSTS<:TT<:S{1:A,2:B}={2:B,1:A}T<:T

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

দ্বারা সারি ধরনের , আমি উপরের হিসাবে অথবা একটি সমতুল্য বর্ণনা একটি অ-তুচ্ছ একীকরণ থাকার মানে করব। এটি ব্যতীত, সারি প্রকারগুলি নেস্টেড টিপলসের চেয়ে সামান্য বেশি। দ্রষ্টব্য, সারি প্রকারগুলি প্যারামেট্রিক পলিমারফিজম থেকে পৃথক; আমি সারি ভেরিয়েবল বলতে বোঝাতে চাইছি না। সম্পর্কে তর্ক থেকে()উপরে, স্ট্রাকচারাল সাব টাইপিং সারি প্রকারগুলি বোঝায় তবে বিপরীত নয়। প্যারামেট্রিক পলিমারফিজমটি সারি ধরণের বা কাঠামোগত সাব টাইপিংয়ের জন্য অর্থোগোনাল (যে অর্থে আপনি এটি থাকতে পারেন বা না রাখতে পারেন তা অবশ্যই ইন্টারঅ্যাকশন রয়েছে)। স্ট্রাকচারাল সাব টাইপিং + প্যারামেট্রিক পলিমারফিজমযুক্ত একটি সিস্টেমটি সারি টাইপ + প্যারামেট্রিক পলিমারফিজম (কিছু ধরণের "রেকর্ড ইউনিয়ন" ধরে নিচ্ছে) এই অর্থে যে পরবর্তীকালে প্রতিটি শব্দ পূর্বের ক্ষেত্রে একই ধরণের টাইপ করা যায়। প্রাক্তন কেবল অতিরিক্ত ধরণের সাথে টাইপ করতে সক্ষম। ব্রায়ান উদাহরণ ব্যবহার করে, কাঠামোগত subtyping এবং স্থিতিমাপ পলিমরফিজম সহ একটি সিস্টেমের answerসারি টাইপিং সংস্করণে যেমন একই ধরনের হবে, কিন্তু এটি subtyping সংস্করণ ধরন হবে পাশাপাশি

সুতরাং আপনি সম্ভবত প্যারামেট্রিক পলিমারফিজম ছাড়াই স্ট্রাকচারাল সাব টাইপিংয়ের সাথে সারি টাইপ + প্যারামেট্রিক পলিমারফিজম তুলনা করতে চান। প্রাক্তনের (এবং কখনও কখনও অপূর্ণতা) এর মূল সুবিধাটি হ'ল এটি আপনাকে বিশ্বব্যাপী তথ্য প্রচারের অনুমতি দেয় । যখন তাত্ক্ষণিকভাবে পরিণত হয় , এর সাথে সর্বদা একত্রিত করা সমস্ত কিছু ততক্ষণে তাত্ক্ষণিক হয়ে যায়। এটি আপনার অ্যাপ্লিকেশনটির মূল পর্যন্ত প্রবেশ করতে পারে। কোডের বড় অংশগুলির মাধ্যমে সারির ভেরিয়েবলগুলি বহন করা অস্বাভাবিক নয়। সাবটাইপিংয়ের পদ্ধতিকে ভুলে যাওয়াρ{ c : Number }তথ্য: একটি সাব টাইপ থেকে একটি সুপার টাইপের কাছে যাওয়ার তথ্য হারাতে (টাইপ) তথ্য। এটি প্রায়শই আপনি যা চান তা হতে পারে: আপনার কাছে যত্নশীল এমন একটি সাধারণ ধরণ রয়েছে এবং অন্য সমস্ত কিছু অপ্রাসঙ্গিক বিবরণ। আমার পক্ষপাতটি যথাসম্ভব প্রকারের তথ্য বজায় রাখার দিকে এবং কেবল এটি স্পষ্টভাবে বাতিল করার দিকে is সাবটাইপিংয়ের পদ্ধতির ডাউনসাইডগুলি প্রায়শই প্রোগ্রামগুলির দ্বারা প্রমাণিত হয় যা সঠিক টাইপ হয় তবে কেবল কারণগুলি প্রকারগুলিকে একটি (এন তথ্যহীন) "শীর্ষ" প্রকারে ঠেলা যায়, যেমন খালি রেকর্ড। পুনরাবৃত্তি করা, প্যারামেট্রিক পলিমারফিজম (সাধারণভাবে) প্রকারের তথ্য সংরক্ষণ করে, সাবটাইপিং ইচ্ছাকৃতভাবে এটি হারাতে থাকে।


বিস্তারিত প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ! আরেকটি প্রশ্ন: যদি স্ট্রাকচারাল সাবটাইপিং + প্যারামেট্রিক পলিমারফিজম সারি টাইপিং + প্যারামেট্রিক পলিমারফিজম সাবমিস করে, তবে আপনি কেন পরে ব্যবহার করবেন?
অ্যালেক্স আর

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