সাব টাইপিং এক ধরণের এক্সপ্রেশন দিয়ে বলেছে যে আমরা এটিকে অন্য টাইপও দিতে পারি। আমরা বলি পূর্ববর্তীটি পরবর্তীকালের একটি সাব টাইপ এবং এই সাব টাইপিং সম্পর্কটি আরও অনেক সম্পর্ককে প্ররোচিত করে। প্রতীকগুলিতে,
। ⊢ ই: এসএস< : টি। ⊢ ই: টি
এখানে মূল জিনিসটি (এবং যে কারণে আমি এটি পর্যালোচনা করেছি) তা হ'ল একই অভিব্যক্তিটি দুটি ভিন্ন ধরণের দেওয়া হয়। অন্তর্নিহিত প্রকারের ইনস্ট্যান্টিয়েশন সহ প্যারামেট্রিকভাবে বহুবর্ষীয় ভাষায় আমাদের নিম্নলিখিত সাব-টাইপিং সম্পর্ক রয়েছে: ora
সব ধরণের । টাইপ ইনস্ট্যান্টেশন যদি সিস্টেম এফের মতো স্পষ্ট হয় তবে এই সাব টাইপিং সম্পর্কটি ধরে রাখে না।টি( ∀ α । Τ)) < : τ[ টি/ α]টি
কিছুটা হলেও, আমরা বলতে পারি যে সারি প্রকারের সাথে একটি ভাষা রয়েছে (সাধারণত) ফর্মটির বৃদ্ধি প্রদান যেখানে । যাইহোক, আসলে এটি যেভাবে পরিচালিত হয় তা হ'ল ধরণের সমতার ধারণা (যেমন একীকরণ) যাতে অর্থাৎ তারা একত্রিত হয়। এই ক্ষেত্রে, সাব টাইপ সম্পর্কটি তুচ্ছ এক।{ ℓ1: এ , ℓ2: বি } < : { ℓ2: বি , ℓ1: এ }{ ℓ1: এ , ℓ2: বি } ≅{ ℓ2: বি , ℓ1: এ }{ ℓ 1 : এ , ℓ 2 : বি } = { ℓ 2 : বি , ℓ 1 : এ } টি < : টিএস≅টি⟺এস< : টি। টি< : এস{ ℓ1: এ , ℓ2: বি } = { ℓ2: বি , ℓ1: এ }টি< : টি
সাধারণত যখন আমরা সাবটাইপিংয়ের সাথে কোনও ভাষার কথা বলি তখন আমাদের অর্থ স্থল প্রকারের উপর একটি তুচ্ছ ত্রিভুজের সাব টাইপিং সম্পর্কের সাথে অর্থাত্ মুক্ত বিন্যাস ব্যতীত প্রকারের (যা অবশ্যই নন-গ্রাউন্ডের জন্য সাব-টাইপিং সম্পর্ক তৈরি করতে পারে)। সুতরাং রায়ের মতো সারি পলিমারফিজমযুক্ত সিস্টেমটি এই অর্থে সাব টাইপিংয়ের ভাষা নয় যদিও এর মধ্যে তুচ্ছ-তুচ্ছ সাব-টাইপ সম্পর্ক রয়েছে যা কোনও স্পষ্টতই তাত্ক্ষণিক প্যারাম্যাট্রিক পলিমারফিক ভাষা থেকে আসে। অন্যদিকে স্ট্রাকচারাল সাব টাইপিং স্পষ্টভাবে স্থল প্রকারের জন্য অ-তুচ্ছ সাব-টাইপিং সম্পর্ককে বর্ণনা করে।
দ্বারা সারি ধরনের , আমি উপরের হিসাবে অথবা একটি সমতুল্য বর্ণনা একটি অ-তুচ্ছ একীকরণ থাকার মানে করব। এটি ব্যতীত, সারি প্রকারগুলি নেস্টেড টিপলসের চেয়ে সামান্য বেশি। দ্রষ্টব্য, সারি প্রকারগুলি প্যারামেট্রিক পলিমারফিজম থেকে পৃথক; আমি সারি ভেরিয়েবল বলতে বোঝাতে চাইছি না। সম্পর্কে তর্ক থেকে(≅)উপরে, স্ট্রাকচারাল সাব টাইপিং সারি প্রকারগুলি বোঝায় তবে বিপরীত নয়। প্যারামেট্রিক পলিমারফিজমটি সারি ধরণের বা কাঠামোগত সাব টাইপিংয়ের জন্য অর্থোগোনাল (যে অর্থে আপনি এটি থাকতে পারেন বা না রাখতে পারেন তা অবশ্যই ইন্টারঅ্যাকশন রয়েছে)। স্ট্রাকচারাল সাব টাইপিং + প্যারামেট্রিক পলিমারফিজমযুক্ত একটি সিস্টেমটি সারি টাইপ + প্যারামেট্রিক পলিমারফিজম (কিছু ধরণের "রেকর্ড ইউনিয়ন" ধরে নিচ্ছে) এই অর্থে যে পরবর্তীকালে প্রতিটি শব্দ পূর্বের ক্ষেত্রে একই ধরণের টাইপ করা যায়। প্রাক্তন কেবল অতিরিক্ত ধরণের সাথে টাইপ করতে সক্ষম। ব্রায়ান উদাহরণ ব্যবহার করে, কাঠামোগত subtyping এবং স্থিতিমাপ পলিমরফিজম সহ একটি সিস্টেমের answer
সারি টাইপিং সংস্করণে যেমন একই ধরনের হবে, কিন্তু এটি subtyping সংস্করণ ধরন হবে পাশাপাশি ।
সুতরাং আপনি সম্ভবত প্যারামেট্রিক পলিমারফিজম ছাড়াই স্ট্রাকচারাল সাব টাইপিংয়ের সাথে সারি টাইপ + প্যারামেট্রিক পলিমারফিজম তুলনা করতে চান। প্রাক্তনের (এবং কখনও কখনও অপূর্ণতা) এর মূল সুবিধাটি হ'ল এটি আপনাকে বিশ্বব্যাপী তথ্য প্রচারের অনুমতি দেয় । যখন তাত্ক্ষণিকভাবে পরিণত হয় , এর সাথে সর্বদা একত্রিত করা সমস্ত কিছু ততক্ষণে তাত্ক্ষণিক হয়ে যায়। এটি আপনার অ্যাপ্লিকেশনটির মূল পর্যন্ত প্রবেশ করতে পারে। কোডের বড় অংশগুলির মাধ্যমে সারির ভেরিয়েবলগুলি বহন করা অস্বাভাবিক নয়। সাবটাইপিংয়ের পদ্ধতিকে ভুলে যাওয়াρ{ c : Number }
তথ্য: একটি সাব টাইপ থেকে একটি সুপার টাইপের কাছে যাওয়ার তথ্য হারাতে (টাইপ) তথ্য। এটি প্রায়শই আপনি যা চান তা হতে পারে: আপনার কাছে যত্নশীল এমন একটি সাধারণ ধরণ রয়েছে এবং অন্য সমস্ত কিছু অপ্রাসঙ্গিক বিবরণ। আমার পক্ষপাতটি যথাসম্ভব প্রকারের তথ্য বজায় রাখার দিকে এবং কেবল এটি স্পষ্টভাবে বাতিল করার দিকে is সাবটাইপিংয়ের পদ্ধতির ডাউনসাইডগুলি প্রায়শই প্রোগ্রামগুলির দ্বারা প্রমাণিত হয় যা সঠিক টাইপ হয় তবে কেবল কারণগুলি প্রকারগুলিকে একটি (এন তথ্যহীন) "শীর্ষ" প্রকারে ঠেলা যায়, যেমন খালি রেকর্ড। পুনরাবৃত্তি করা, প্যারামেট্রিক পলিমারফিজম (সাধারণভাবে) প্রকারের তথ্য সংরক্ষণ করে, সাবটাইপিং ইচ্ছাকৃতভাবে এটি হারাতে থাকে।