সংশোধন প্রকারের অন্তর্ভুক্ত


11

কর্মক্ষেত্রে আমাকে একটি গতিশীল ভাষা সম্পর্কে কিছু ধরণের তথ্য অনুমান করার কাজ দেওয়া হয়েছিল। আমি নেস্টেড 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

:আমিএনটিআমিএনটি:(আমিএনটিআমিএনটি)আমিএনটি

:τ1τ2(আমিএনটিτ1τ1τ2)τ2

আমি ওভারলোডেড +অপারেটরের ধরণের সমাধান করতে ইতিমধ্যে ফাংশনাল নির্ভরতা ব্যবহার করছি , সুতরাং আমি বুঝতে পেরেছিলাম যে এটির fঅভ্যন্তরের প্রকারটি সমাধান করার জন্য এগুলি ব্যবহার করা স্বাভাবিক পছন্দ g। এটি হল fএর সমস্ত অ্যাপ্লিকেশনগুলিতে প্রকারভেদ একসাথে স্বতন্ত্রভাবে নির্ধারণ করে g। যাইহোক, এটি সক্রিয় হিসাবে, ফান্ডেপগুলি উত্সের ধরণের পরিবর্তনশীল সংখ্যায় নিজেকে ভয়ঙ্করভাবে ধার দেয় না।

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

programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

উত্তর:


9

আপনি এই সত্যকে হোঁচট খাচ্ছেন যে উচ্চতর-অর্ডার ভাষার জন্য স্থিতিশীল আক্রমণকারীদের অনুশীলনটি তাত্ত্বিকভাবে অনস্বীকার্য ছাড়াও চর্চায় বেশ কঠিন। আপনার প্রশ্নের সুনির্দিষ্ট উত্তর কী তা আমি নিশ্চিত নই, তবে কয়েকটি বিষয় নোট করুন:

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

  • ইনফারিং রিফাইনমেন্টের ধরণের এবং:

    1. আপনার প্রোগ্রামটির বিমূর্ত ব্যাখ্যা গণনা করা

    2. অপরিহার্য ভাষায় লুপের আক্রমণকারীদের গণনা করা।

এটি মাথায় রেখে, পরিমার্জন প্রকারের অনুক্রমের বিষয়ে এখানে কয়েকটি অগোছালো উল্লেখ রয়েছে re দ্রষ্টব্য যে পরিশোধনকারী ধরণের অনেকগুলি স্বাদযুক্ত রয়েছে: আমি উত্সাহী ডেটাটাইপগুলির সংশোধনগুলিতে আরও আগ্রহী হতে চাইছি, সুতরাং এই তালিকাটি সেই দিকটিতে ঝুঁকে পড়ে।

  1. ক্লাসিকগুলি দিয়ে শুরু করুন: কাসোট এবং কাসোট দ্বারা উচ্চ-আদেশের কার্যকরী প্রোগ্রামগুলির সম্পর্কিত সম্পর্কিত বিমূর্ত ব্যাখ্যা এটি ব্যাখ্যা করে যে কীভাবে আপেক্ষিক শব্দার্থ ব্যবহার করে উচ্চ-অর্ডার প্রোগ্রামগুলিতে বিমূর্ত ব্যাখ্যাটি প্রসারিত করা যায়।

  2. রোনডন, কাওয়াগুচি এবং halaালার তরল প্রকারগুলি । এটি খুব বিবর্তিত কাজ, যা এমএল স্টাইল প্রোগ্রামগুলির জন্য সুরক্ষা টীকাগুলি (উদাহরণস্বরূপ অ্যারে বাউন্ড চেকস) অনুমান করার জন্য এইচএম এবং এক ধরণের প্রাক্কলিত সংশোধনকে একত্রিত করে। অনুমান 2 পদক্ষেপে এগিয়ে যায়; প্রথমটি হ'ল প্রকারের টীকাগুলির এইচএম অনুমিতি, যা পরিমার্জনীয়করণের পছন্দটি পরিচালনা করে।

  3. এফ*এফ#

  4. নির্দিষ্ট ধরণের পরিশোধক প্রকারের আকারের জন্য চিন ও খু-র একটি চমৎকার কাগজ রয়েছে : আকারের টীকা সহ types

  5. এটিএস প্রোগ্রামিং ভাষা একটি সিস্টেম বিভিন্ন পরিমার্জনা পারবেন এবং তাদের সঙ্গে প্রোগ্রাম লেখার জন্য সুবিধা প্রদান করে। তবে টীকাগুলি নির্বিচারে জটিল হতে পারে (এবং এভাবে অনস্বীকার্য) এবং তাই ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন হতে পারে। আমি বিশ্বাস করি যে এই ধরণেরগুলির জন্য একধরণের অনুক্রমের বিষয় রয়েছে, তবে কোন নিবন্ধটি সুপারিশ করবে তা আমি নিশ্চিত নই।

  6. সর্বশেষ, তবে সর্বনিম্ন দ্য কার্টেসিয়ান প্রোডাক্ট অ্যালগোরিদম , ওলে এজেনের। পরিমার্জনের ধরণগুলি স্পষ্টভাবে উল্লেখ না করার সময়, আপনার মনে হয় যে সমস্যাটি সমাধান করার এটি সবচেয়ে কাছের কাজ। বিমূর্তে প্যারাম্যাট্রিক পলিমারফিজমের উল্লেখ দ্বারা বোকা বোকাবেন না: তারা কংক্রিটের ধরণের অনুমানগুলি দেখায় যা সম্ভাব্য পারমাণবিক প্রকারের কেবলমাত্র tuples। দক্ষতার উপর জোর দেওয়া হয়। আমি প্রথমে এই নিবন্ধটি পড়ার পরামর্শ দিচ্ছি এটি আপনার সমস্যার সমাধান করে কিনা তা দেখার জন্য।

λ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.