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