টাইপড র্যাকেট হাস্কেলের থেকে খুব আলাদা। লিস্প এবং স্কিমে টাইপ সিস্টেমগুলি এবং সাধারণভাবে প্রথাগতভাবে টাইপ করা ভাষা বাস্তুসংস্থান ব্যবস্থায় টাইপ সিস্টেমগুলির একটি মৌলিক লক্ষ্য রয়েছে যা অন্যান্য টাইপ সিস্টেমগুলি না করে - বিদ্যমান আনলকযুক্ত কোডের সাথে আন্তঃব্যবস্থাপনা করে । টাইপড র্যাকেট উদাহরণস্বরূপ বিভিন্ন র্যাকেট আইডিয়ামগুলিকে সামঞ্জস্য করার জন্য পুরো নতুন টাইপিং বিধি চালু করে। এই ফাংশনটি বিবেচনা করুন:
(define (first some-list)
(if (empty? some-list)
#f
(car some-list)))
খালি খালি তালিকার জন্য, এটি প্রথম উপাদানটি প্রদান করে। খালি তালিকার জন্য, এটি মিথ্যা প্রত্যাবর্তন করে। এটি টাইপ করা ভাষায় প্রচলিত; একটি টাইপ করা ভাষা কিছু মোড়কের প্রকার যেমন Maybe
খালি ক্ষেত্রে ত্রুটি ছুঁড়ে ব্যবহার করবে । আমরা যদি এই ফাংশনে কোনও প্রকার যুক্ত করতে চাই, তবে কোন প্রকারটি ব্যবহার করা উচিত? এটি [a] -> a
(হাস্কেল স্বরলিপিটিতে) নয়, কারণ এটি মিথ্যা ফিরে আসতে পারে। এটিও নয় [a] -> Either a Boolean
, কারণ (১) এটি সর্বদা খালি ক্ষেত্রে মিথ্যা ফেরত দেয়, একটি স্বেচ্ছাসেবক বুলেটিয়ান নয় এবং (২) যে কোনও একটির মধ্যে উপাদানগুলি Left
মিথ্যা এবং মিথ্যা থাকে Right
এবং প্রকৃত উপাদানটিতে পৌঁছানোর জন্য আপনাকে "উভয়ই আনপ্রেপ" করতে হবে। পরিবর্তে, মানটি একটি সত্য ইউনিয়ন দেয়- কোনও মোড়ক নির্মাণকারী নেই, এটি কেবল কিছু ক্ষেত্রে এক প্রকার এবং অন্য ক্ষেত্রে অন্য ধরণের দেয়। টাইপড র্যাকেটে এটি ইউনিয়ন ধরণের নির্মাতার সাথে প্রতিনিধিত্ব করা হয়:
(: first (All (A) (-> (Listof A) (U A #f))))
(define (first some-list)
(if (empty? some-list)
#f
(car some-list)))
টাইপ (U A #f)
যুক্তরাষ্ট্রের ফাংশন কোনো মোড়ানো ছাড়া তালিকা বা মিথ্যা একটি উপাদান আসতে পারে Either
উদাহরণস্বরূপ। টাইপ চেকারটি some-list
টাইপ (Pair A (Listof A))
বা ফাঁকা তালিকার যেটি হয় তা নির্ধারণ করতে পারে এবং তদতিরিক্ত এটি যদি অনুমান করে যে যদি বিবৃতিটির দুটি শাখায় এটি জানা যায় যে কেসের ক্ষেত্রে এটি রয়েছে । প্রকারের পরীক্ষক জানেন যে (car some-list)
এক্সপ্রেশনটিতে তালিকার অবশ্যই টাইপ থাকতে হবে(Pair A (Listof A))
কারণ যদি শর্তটি এটি নিশ্চিত করে। এটিকে ইভেন্ট টাইপিং বলা হয় এবং টাইপড কোড থেকে টাইপড কোডে স্থানান্তর সহজ করতে ডিজাইন করা হয়েছে।
সমস্যা হ'ল মাইগ্রেশন। সেখানে এক টন টাইপযুক্ত র্যাকেট কোড রয়েছে এবং টাইপড র্যাকেটি আপনাকে কেবল আপনার পছন্দসই টাইপযুক্ত লাইব্রেরিগুলি ছেড়ে দিতে বাধ্য করতে পারে না এবং যদি আপনি এটি ব্যবহার করতে চান তবে আপনার কোডবেজে টাইপ করে এক মাস ব্যয় করতে পারবেন না। এই সমস্যাটি তখনই প্রযোজ্য যখনই আপনার বিদ্যমান কোডবেজে ধীরে ধীরে প্রকারগুলি যুক্ত করা হয়, এই ধারণাগুলির জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটির জন্য টাইপস্ক্রিপ্ট এবং এর যে কোনও প্রকারটি দেখুন।
একটি ধীরে ধীরে ধরণের সিস্টেমকে সাধারণ টাইপযুক্ত আইডিয়োমগুলি মোকাবেলা করার জন্য এবং বিদ্যমান টাইপযুক্ত কোডের সাথে ইন্টারঅ্যাক্ট করার জন্য সরঞ্জাম সরবরাহ করতে হবে। এটি ব্যবহার করা অন্যথায় বেদনাদায়ক হয়ে উঠবে, ক্লোজার উদাহরণের জন্য "আমরা আর কেন কোর.টাইপড ব্যবহার করি না" দেখুন ।