অ্যাসাইনমেন্ট ব্যতীত অপরিহার্য বিবৃতিগুলির জন্য অনুমান টাইপ করুন


10

অপরিহার্য ভাষাগুলির জন্য টাইপ সিস্টেমগুলি সম্পর্কিত গবেষণামূলক গবেষণাপত্রগুলির অনুসন্ধানে আমি কেবলমাত্র পরিবর্তিত রেফারেন্স সহ একটি ভাষার সমাধান পাই তবে প্রকৃত অপরিহার্য নিয়ন্ত্রণ কাঠামো যেমন যৌগিক অপারেটর, লুপ বা শর্তসাপেক্ষ ছাড়া without

সুতরাং এটি স্পষ্ট নয় যে কীভাবে একটি আধ্যাত্মিক ভাষা যেমন http://rust-lang.org হিসাবে আংশিক ধরণের অনুমিতি প্রয়োগ করা যেতে পারে।

কাগজপত্রগুলিতে প্যারামেট্রাইজড ধরণের উল্লেখ করা হয়নি যেমন List of aপ্যারামেট্রাইজড প্রকারগুলি হিন্ডলি-মিলনার টাইপ সিস্টেমের একটি তুচ্ছ এক্সটেনশান - কেবল একীকরণের অ্যালগরিদম বাড়ানো উচিত এবং বাকী অনুমান যেমন কাজ করে। যাইহোক, অ্যাসাইনমেন্টগুলি তুচ্ছভাবে যুক্ত করা যায় না কারণ প্যারাডক্স সৃষ্টি হয়, তাই এমএল মান সীমাবদ্ধতার মতো বিশেষ কৌশলগুলি প্রয়োগ করা আবশ্যক।

আপনি কি আবশ্যকীয় লুপস, শর্তসাপেক্ষ, আইও এবং যৌগিক বিবৃতি সহ কোনও ভাষার জন্য টাইপ সিস্টেমের বর্ণনা দেওয়ার জন্য কোনও কাগজপত্র বা বই সুপারিশ করতে পারেন?


4
আমি নিশ্চিত নই যে আমি আপনার প্রশ্নের উত্স বুঝতে পেরেছি, আংশিক কারণ স্ট্যান্ডার্ড এমএলে আসলে যৌগিক অপারেটর, লুপ এবং শর্তসাপেক্ষ রয়েছে (একটি লাইনের উদাহরণ let val x = ref 9 in while !x>0 do (print (Int.toString (!x)); x := !x-1) end:)। সুতরাং একটি গবেষণামূলক প্রশ্নের স্তরে, আপনি যে উত্তরটি সন্ধান করছেন "মান সীমাবদ্ধতা সহ ক্যামেল / এসএমএল তৈরি কৌশলগুলি প্রয়োগ করুন"?
রব সিমন্স

প্রশ্নটি ছিল "ক্যামেল / এসএমএলের জন্য কৌশলগুলি সম্পর্কিত কী কী কাগজপত্র আপনি সুপারিশ করেন?"
nphonecop

ঠিক আছে - আমি এটি বুঝতে পেরেছিলাম এবং আমার শেষ বাক্যটি সম্পাদনের চেষ্টা করতে যাচ্ছিলাম "এমএল-তে ব্যবহৃত হ্যান্ডলি-মিলনার ধরণের অনুকরণের জন্য আপনি কী অ্যাক্সেসযোগ্য রেফারেন্সটি খুঁজছেন?" এবং তারপরে আমি 5 মিনিটের সম্পাদনার সীমাটি আঘাত করেছি :-)
রব সিমন্স

উত্তর:


14

আপনি যদি টাইপ-ইনফারেন্সের জন্য একটি ঝরঝরে, কার্যকরী রেফারেন্সের সন্ধান করেন তবে আমি গুন্ড্রি, ম্যাকব্রাইড, এবং ম্যাককিনার 2010 " প্রসঙ্গে প্রবন্ধের প্রকারের অনুকরণ " এর পক্ষে কিছুটা আংশিক , যদিও এটি প্রকৃত বিদ্যমান বাস্তবায়নের জন্য ভাল গাইড নাও হতে পারে ।

আমি মনে করি উত্তর অংশ, মান সীমাবদ্ধতা বহুদূরে, সত্যিই যে অনেক অসুবিধা অভিযোজিত অনুজ্ঞাসূচক ভাষায় Hindley-মিলনার টাইপ অনুমান নয়: যদি আপনার সংজ্ঞায়িত e1; e2জন্য অন্বিত চিনি যেমন (fn _ => e2) e1এবং সংজ্ঞায়িত while e1 do e2জন্য অন্বিত চিনি যেমন whiledo e1 (fn () => e2), যেখানে whiledoনিয়মিত হয় পুনরাবৃত্তি ফাংশন

fun whiledo g f = if g then (f (); whiledo g f) else ();

তারপরে টাইপ ইনফারেন্স সহ সবকিছু ঠিকঠাক কাজ করবে ।

মান সীমাবদ্ধতা একটি বিশেষ কৌশল হিসাবে, আমি নীচের গল্পটি পছন্দ করি; আমি নিশ্চিত যে আমি এটি কার্ল কেরি থেকে তুলেছি। নিম্নলিখিত কোডটি বিবেচনা করুন, যা মান সীমাবদ্ধতা আপনাকে এমএল-এ লেখা থেকে বিরত রাখবে:

let
   val x: 'a option ref = ref NONE
in
   (x := SOME 5; x := SOME "Hello")  
end

এটি নিম্নলিখিত কোডের সাথে তুলনা করুন, যা সম্পূর্ণ অপ্রয়োজনীয়:

let
   val x: unit -> 'a option ref = fn () => ref NONE
in
   (x () := SOME 5; x () := SOME "Hello")  
end

আমরা জানি যে দ্বিতীয় উদাহরণটি কী করে: এটি দুটি নতুন রেফ কোষযুক্ত তৈরি করে NONE, তারপরে SOME 5প্রথমটিকে একটি (এ int option ref) রাখে, তারপরে SOME "Hello"দ্বিতীয়টিতে রাখে (ক string option ref)।

তবে আমরা কীভাবে xসিস্টেম এফ (পলিমারফিক ল্যাম্বডা-ক্যালকুলাস) উপস্থাপন করব তার দিক দিয়ে প্রথম উদাহরণটি সম্পর্কে ভাবেন । এই ধরনের সেটিং-এ, x" " টাইপের মান হবে , সুতরাং এর অর্থ এই যে, একটি শব্দ হিসাবে, এর মান অবশ্যই একটি হতে হবে (প্রকার) : " "।Λ α রেফ [ α ] (কোন নয় )α.ref(option(α))xΛα.ref[α](NONE)

এটি সূচিত করবে যে প্রথম উদাহরণের একটি "ভাল" আচরণ হ'ল দ্বিতীয় উদাহরণটির ঠিক একইরকম আচরণ করা - টাইপ-লেভেল ল্যাম্বডাকে দুটি ভিন্ন সময় ইনস্ট্যান্ট করুন। আমরা প্রথমবারের xসাথে ইনস্ট্যান্ট intকরব, যার ফলে x [int]একটি রেফারেন্স সেল হোল্ডিংয়ের মূল্যায়ন হবে NONEএবং তারপরে SOME 5। দ্বিতীয় সময় আমরা instantiate xসঙ্গে string, যে ক্ষেত্রে হবে x [string]একটি (থেকে নির্ণয় করা আলাদা! ) রেফারেন্স সেল হোল্ডিং NONEএবং তারপর SOME "Hello"। এই আচরণটি "সঠিক" (টাইপ-নিরাপদ), তবে কোনও প্রোগ্রামার প্রত্যাশা করবে এটি অবশ্যই নয়, এবং এই অপ্রত্যাশিত আচরণের সাথে প্রোগ্রামারদের এড়াতে আমাদের এমএল-তে মান সীমাবদ্ধতা রয়েছে।


1
আপনার পছন্দসই সংস্করণটিতে e1; e2একটি মেলানো বন্ধনী এবং একটি সেমিকোলন রয়েছে (যা এটি সংজ্ঞায়িত করার কথা। মানে (fn _ => e2) e1?
Tsuyoshi Ito

ডান-ও, স্যুওশি: স্থির।
রব সিমন্স

আপনার শেষ অনুচ্ছেদে মূলত বলা হয়েছে: (অপারেশনাল) শব্দার্থক এবং টাইপ সিস্টেমের সাথে মেলে না, একটি ঠিক করা দরকার এবং আমরা পরবর্তীটি ঠিক করতে বেছে নিই।
রাদু গ্রেগোর

রাদু: অবশ্যই, আমি সেই সারসংক্ষেপের সাথে একমত
রব সিমন্স

3

জাভিয়ের লেরয়ের পিএইচডি থিসিসটি একটি ভাল শুরু।


1
থিসিসটি আবশ্যকীয় লুপস, শর্তসাপেক্ষে, আইও এবং যৌগিক বিবৃতিগুলি কভার করে না, এটি কি? আমার প্রশ্নের মূল কারণ হ'ল আমি এই বিষয়গুলি কভার করে এমন কাগজপত্রগুলি খুঁজে পাইনি। টাইপিং অ্যাসাইনমেন্ট সম্পর্কে কাগজগুলি প্রচুর।
এনপিকনকপ

0

আমার নিজের প্রশ্নে নেকরোয়ান্সওয়ারিংয়ের জন্য দুঃখিত, তবে প্রশ্নে উল্লেখটি হল

স্ট্যান্ডার্ড এমএল , মিলনার, 1983 এর জন্য একটি প্রস্তাব

অংশ 6 "স্ট্যান্ডার্ড ডেরাইভড ফর্মগুলি" আবশ্যক কন্সট্রাক্টসগুলির ডিজিউয়ারিংকে বেশ বিস্তৃতভাবে কভার করে। এবং এখনও অবধি এটি এই বৃহত্ সুস্পষ্ট রূপান্তরগুলির প্রথমতম রেফারেন্স যা আমি খুঁজে পেতে পারি।

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