কর্মক্ষেত্রে আমাকে একটি গতিশীল ভাষা সম্পর্কে কিছু ধরণের তথ্য অনুমান করার কাজ দেওয়া হয়েছিল। আমি নেস্টেড let
এক্সপ্রেশনগুলিতে বিবৃতিগুলির ক্রমগুলি আবার লিখি , যেমন:
return x; Z => x
var x; Z => let x = undefined in Z
x = y; Z => let x = y in Z
if x then T else F; Z => if x then { T; Z } else { F; Z }
যেহেতু আমি সাধারণ ধরণের তথ্য থেকে শুরু করছি এবং আরও নির্দিষ্ট ধরণের অনুমানের চেষ্টা করছি, তাই প্রাকৃতিক পছন্দটি পরিশোধিত প্রকার ine উদাহরণস্বরূপ, শর্তসাপেক্ষ অপারেটর তার সত্য এবং মিথ্যা শাখার প্রকারের ইউনিয়ন প্রদান করে। সাধারণ ক্ষেত্রে, এটি খুব ভাল কাজ করে।
নীচের প্রকারটি অনুমান করার চেষ্টা করার সময় আমি একটি ছিনতাইয়ের মধ্যে পড়েছিলাম:
function g(f) {
var x;
x = f(3);
return f(x);
}
যা আবার লিখিত:
\f.
let x = undefined in
let x = f 3 in
f x
আমি ওভারলোডেড +
অপারেটরের ধরণের সমাধান করতে ইতিমধ্যে ফাংশনাল নির্ভরতা ব্যবহার করছি , সুতরাং আমি বুঝতে পেরেছিলাম যে এটির f
অভ্যন্তরের প্রকারটি সমাধান করার জন্য এগুলি ব্যবহার করা স্বাভাবিক পছন্দ g
। এটি হল f
এর সমস্ত অ্যাপ্লিকেশনগুলিতে প্রকারভেদ একসাথে স্বতন্ত্রভাবে নির্ধারণ করে g
। যাইহোক, এটি সক্রিয় হিসাবে, ফান্ডেপগুলি উত্সের ধরণের পরিবর্তনশীল সংখ্যায় নিজেকে ভয়ঙ্করভাবে ধার দেয় না।
যাইহোক, বহুকর্ম এবং পরিশোধন টাইপ এর ইন্টারপ্লে সমস্যাযুক্ত। আমি কি অনুপস্থিত আছে এর চেয়ে ভাল কোন পদ্ধতির আছে? আমি বর্তমানে "এমএল জন্য সংশোধন প্রকার" হজম করছি এবং আরও সাহিত্য বা অন্যান্য পয়েন্টার প্রশংসা করব।