হিন্ডলি-মিলনার কোন অংশটি আপনি বুঝতে পারছেন না?


850

আমি শপথ করছি সেখানে অমর শব্দের বৈশিষ্ট্যযুক্ত বিক্রয়ের জন্য একটি টি-শার্ট থাকত:


কি অংশ

Hindley-মিলনার

তুমি কি বোঝ না ?


আমার ক্ষেত্রে, উত্তরটি হবে ... এটি সব!

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

আমি গ্রীক বর্ণমালার অক্ষরগুলি অবশ্যই অবশ্যই চিহ্নিত করি এবং "∉" এর মতো চিহ্নগুলি (যা সাধারণত বোঝায় যে কোনও কিছু সেটগুলির উপাদান নয়)।

অন্যদিকে, আমি "never" এর আগে কখনও দেখিনি ( উইকিপিডিয়া দাবি করেছে এর অর্থ "পার্টিশন" হতে পারে )। আমি এখানে ভিনকুলাম ব্যবহারের সাথেও অপরিচিত। (সাধারণত, এটি একটি ভগ্নাংশকে বোঝায়, তবে এখানে এটি প্রদর্শিত হয় না))

কেউ যদি কমপক্ষে আমাকে এই চিহ্নগুলির সমুদ্রের অর্থ কী তা বোঝার জন্য কোথায় শুরু করতে বলে তা বলতে পারলে তা সহায়ক হবে।


8
আপনি যদি করছে খুঁজছেন আলগোরিদিম একটি ভাল ব্যাখ্যা, শ্রেষ্ঠ যে আমি এতদূর পাওয়া করেছি জন্য শ্রীরাম Krishnamurthi এর 30 অধ্যায়ে হয় প্রোগ্রামিং ভাষাসমূহ: অ্যাপ্লিকেশন এবং ব্যাখ্যা (! সিসি লাইসেন্স)।
লাসলোহ

2
@lalowh আপনাকে ধন্যবাদ! আমি এটা পড়ছি। নতুন সংস্করণ: cs.brown.edu/courses/cs173/2012/book/book.pdf
স্নোঅনিয়ন

উত্তর:


652
  • অনুভূমিক বার অর্থ হল, "[উপরে] বোঝা [নিচের]"।
  • তাহলে আছে একাধিক এক্সপ্রেশন [উপরে] এ, তারপর বিবেচনা তাদের ANDed একসঙ্গে; [নীচের] গ্যারান্টি দেওয়ার জন্য [উপরের] সমস্তটি অবশ্যই সত্য।
  • :মানে টাইপ আছে
  • মানে হয় । (তেমনি অর্থ "ইন" নেই "))
  • Γসাধারণত একটি পরিবেশ বা প্রসঙ্গ উল্লেখ করতে ব্যবহৃত হয় ; এক্ষেত্রে এটিকে প্রকারের টীকাগুলির একটি সেট হিসাবে ভাবা যেতে পারে, এর ধরণের সাথে একটি শনাক্তকারীকে যুক্ত করে। অতএব x : σ ∈ Γপরিবেশ মানে Γসত্য যে অন্তর্ভুক্ত xটাইপ হয়েছে σ
  • প্রমাণিত বা নির্ধারণ হিসাবে পড়া যেতে পারে । Γ ⊢ x : σএর মানে হল যে পরিবেশটি টাইপ করে Γতা নির্ধারণ করে ।xσ
  • ,পরিবেশে নির্দিষ্ট অতিরিক্ত অনুমানগুলি অন্তর্ভুক্ত করার একটি উপায় Γ
    অতএব, Γ, x : τ ⊢ e : τ'যে পরিবেশ মানে Γ, অতিরিক্ত, ওভার-রাইড ধৃষ্টতা যে সঙ্গে xটাইপ হয়েছেτ , প্রমাণ করে যে eটাইপ হয়েছে τ'

অনুরোধ হিসাবে: অপারেটর অগ্রাধিকার, সর্বোচ্চ থেকে সর্বনিম্ন:

  • যেমন ভাষা-নির্দিষ্ট পোতা এবং mixfix অপারেটর, λ x . e, ∀ α . σ, এবং τ → τ', let x = e0 in e1, এবং ফাংশন অ্যাপ্লিকেশনের জন্য হোয়াইটস্পেস।
  • :
  • এবং
  • , (বাম-মিশুক)
  • একাধিক প্রস্তাব পৃথকীকরণ স্পেস স্পেস (সংযুক্তি)
  • অনুভূমিক দণ্ড

19
অপারেটরদের প্রাধান্য নিয়ম কি কি?
র্যান্ডমব্লিউ

:এবং একেবারে অনুরূপ, এর অর্থ তাদের অর্থ যে একটি জিনিস অন্য জিনিসে অন্তর্ভুক্ত রয়েছে - একটি সেটটিতে উপাদান রয়েছে, এবং কোনও ধরণের মান রয়েছে, এক অর্থে। গুরুত্বপূর্ণ পার্থক্য হল x ∈ Sমানে যে একটি সেট Sআক্ষরিক একটি উপাদান রয়েছে x, যেহেতু Γ ⊢ x : Tমানে যে xবাস ধরনের অনুমিত করা যাবে Tপ্রেক্ষাপটে Γ। এটি বিবেচনা করে, ভার নিয়মটি পড়ে: x যদি x আক্ষরিক অর্থে প্রসঙ্গে থাকে তবে এটি (তুচ্ছভাবে) এ থেকে অনুমান করা যায় «
ডেভিড

@Randomblue আমি সর্বত্র প্রথম বন্ধনী যোগ, যেমন দ্বারা চিহ্ন প্রাধান্য স্পষ্ট প্রণীত (Γ,(x:τ))⊢(x:σ)দেখুন overleaf.com/read/ddmnkzjtnqbd#/61990222
SnowOnion

327

এই বাক্য গঠনটি যদিও এটি জটিল দেখায় তবে এটি মোটামুটি সহজ। মূল ধারণাটি আনুষ্ঠানিক যুক্তি থেকে আসে: পুরো ভাবটি একটি অর্থে থাকে উপরের অর্ধেকটি অনুমান এবং নীচের অর্ধেক ফলাফল হয়। এটি হ'ল যদি আপনি জানেন যে উপরের ভাবগুলি সত্য are

প্রতীক

আরেকটি বিষয় মনে রাখবেন যে কয়েকটি বর্ণের প্রচলিত অর্থ রয়েছে; বিশেষত, Γ আপনি "প্রসঙ্গ" উপস্থাপন করেন — যা আপনি দেখেন এমন অন্যান্য জিনিসের প্রকার। সুতরাং এর মতো Γ ⊢ ...কিছুটির অর্থ " ...আপনি যখন প্রতিটি অভিব্যক্তির প্রকারগুলি জানেন তখনই প্রকাশ" Γ

প্রতীক মূলত এর মানে হল যে আপনি কিছু প্রমাণ করতে পারেন। সুতরাং Γ ⊢ ...একটি বিবৃতিতে বলা হয়েছে যে "আমি ...একটি প্রসঙ্গে প্রমাণ করতে পারি ΓThese এই বিবৃতিগুলিকে টাইপ রায়ও বলা হয়।

আরেকটা জিনিস মনে রাখতে হবে: গণিত, শুধু এমএল এবং Scala, মত x : σমানে যে xটাইপ হয়েছে σ। আপনি এটি হাস্কেলের মতোই পড়তে পারেন x :: σ

প্রতিটি নিয়ম মানে কি

তো, এই বুদ্ধিমান, প্রথম অভিব্যক্তি বুঝতে সহজ হয়ে যদি আমরা জানি যে x : σ ∈ Γ(যে, xকিছু টাইপ হয়েছে σকিছু প্রেক্ষাপটে Γ), তারপর আমরা জানি যে Γ ⊢ x : σ(যে মধ্যে Γ, xটাইপ হয়েছে σ)। সুতরাং সত্যই, এটি আপনাকে অতি আকর্ষণীয় কিছু বলছে না; এটি কেবল আপনাকে কীভাবে আপনার প্রসঙ্গটি ব্যবহার করবেন তা বলে।

অন্যান্য নিয়মগুলিও সহজ। উদাহরণস্বরূপ, নিন [App]। এই নিয়ম দুটি শর্ত রয়েছে: e₀কিছু টাইপ থেকে একটি ফাংশন τকিছু টাইপ করার জন্য τ'এবং e₁ধরনের মান τ। এখন আপনি জানেন যে আপনি কী ধরণের আবেদন e₀করবেন e₁! আশা করি এটি আশ্চর্য নয় :)।

পরবর্তী নিয়মে আরও কিছু নতুন সিনট্যাক্স রয়েছে। বিশেষত, Γ, x : τকেবলমাত্র প্রসঙ্গটি গঠিত Γএবং রায় বোঝানো x : τ। সুতরাং, আমরা যদি জানি যে ভেরিয়েবলের xএকটি প্রকার থাকে τএবং এক্সপ্রেশনটির eএকটি প্রকার থাকে τ', তবে আমরা ফাংশনটি গ্রহণ করে xএবং ফিরে আসে তার প্রকারটিও জানি e। এটি কেবল আমাদের জানায় যে কোনও ফাংশন কী ধরণের হয় এবং কী প্রকারটি ফিরে আসে তা যদি আমরা নির্ধারণ করি তবে কী করা উচিত, তাই এটি অবাক হওয়ার মতোও হওয়া উচিত নয়।

পরেরটি আপনাকে কীভাবে letবিবৃতি পরিচালনা করতে হয় তা আপনাকে বলে দেয় । আপনি কি জানেন কিছু অভিব্যক্তি যদি e₁একটি টাইপ হয়েছে τযতদিন xএকটি টাইপ হয়েছে σ, তারপর letঅভিব্যক্তি যা স্থানীয়ভাবে বেঁধে xধরনের মান σকরা হবে e₁একটি টাইপ আছে τ। সত্যই, এটি আপনাকে কেবল বলে দেয় যে একটি লেট স্টেটমেন্টটি আপনাকে একটি নতুন বাঁধার সাথে প্রসঙ্গটি প্রসারিত করতে letদেয়! যা ঠিক তাই হয়!

[Inst]নিয়ম উপ-টাইপিং নিয়ে কাজ করে। এরা বলছে যে আপনি যদি ধরনের মূল্য আছে σ'এবং এটি একটি উপ-প্রকার σ( একটি আংশিক ক্রম সম্পর্ক প্রতিনিধিত্ব করে) তারপর যে অভিব্যক্তি এছাড়াও ধরনের σ

চূড়ান্ত বিধিটি সাধারণকরণের ধরণগুলির সাথে সম্পর্কিত। একটি দ্রুত সরু: একটি মুক্ত পরিবর্তনশীল একটি পরিবর্তনশীল যা কোনও অভিব্যক্তির ভিতরে লেট-স্টেটমেন্ট বা ল্যাম্বডা দ্বারা প্রবর্তিত হয় না; এই অভিব্যক্তিটি এখন তার প্রসঙ্গ থেকে মুক্ত ভেরিয়েবলের মানের উপর নির্ভর করে rule নিয়মটি বলছে যে যদি এমন কিছু পরিবর্তনশীল থাকে αযা আপনার প্রেক্ষাপটে কোনও কিছুর মধ্যে "মুক্ত" নয় , তবে এটি বলা নিরাপদ যে কোনও অভিব্যক্তি যা আপনি জানেন e : σযে কোনও মানের জন্য সেই ধরণের থাকবে α

কীভাবে নিয়ম ব্যবহার করবেন

সুতরাং, এখন আপনি যে চিহ্নগুলি বুঝতে পেরেছেন, আপনি এই বিধিগুলি দিয়ে কী করবেন? ভাল, আপনি বিভিন্ন মানগুলির প্রকারটি বের করতে এই নিয়মগুলি ব্যবহার করতে পারেন। এটি করার জন্য, আপনার অভিব্যক্তিটি দেখুন (বলুন f x y) এবং এমন একটি নিয়ম সন্ধান করুন যা আপনার বক্তব্যের সাথে মেলে এমন একটি উপসংহার (নীচের অংশ) রয়েছে। আপনার "লক্ষ্য" সন্ধানের জন্য আপনি যে জিনিসটির চেষ্টা করছেন সেটি কল করুন। এই ক্ষেত্রে, আপনি শেষ হওয়া নিয়মের দিকে নজর রাখবেন e₀ e₁। আপনি যখন এটি খুঁজে পেয়েছেন, এখন আপনাকে এই নিয়মের লাইনের উপরে থাকা সমস্ত কিছু প্রমাণ করার নিয়ম সন্ধান করতে হবে। এই জিনিসগুলি সাধারণত সাব-এক্সপ্রেশনগুলির ধরণের সাথে মিলে যায় তাই আপনি মূলত অভিব্যক্তির অংশগুলিতে পুনরাবৃত্তি করছেন। আপনি আপনার প্রুফ ট্রিটি শেষ না করা অবধি কেবল এটি করুন, যা আপনাকে আপনার অভিব্যক্তির ধরণের প্রমাণ দেয়।

সুতরাং এই সমস্ত নিয়মগুলি হুবহু — এবং সাধারণ গাণিতিকভাবে পেডেন্টিক বিশদটি নির্দিষ্ট করে: পি express কীভাবে এক্সপ্রেশনগুলির প্রকারটি বের করতে হয়।

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

দ্রষ্টব্য: আমি সম্ভবত এই ব্যাখ্যাটিতে কিছু ভুল করেছি এবং যদি কেউ তাদেরকে নির্দেশ করে দেয় তবে এটি পছন্দ করব। আমি কয়েক সপ্তাহের মধ্যে এইটিকে ক্লাসে আচ্ছাদিত করব, তাই আমি তখন আরও আত্মবিশ্বাসী হব: পি।


5
pha আলফা একটি নন-ফ্রি টাইপ ভেরিয়েবল, সাধারণ চলক নয়। সুতরাং সাধারণীকরণের নিয়মটি ব্যাখ্যা করার জন্য আরও অনেক কিছু ব্যাখ্যা করতে হবে।
এনপিকনকপ

2
@ এনপোনকনকপ: হুম, ভালো পয়েন্ট। আমি আসলে এই নির্দিষ্ট নিয়মটি আগে দেখিনি। আপনি আমাকে এটি সঠিকভাবে ব্যাখ্যা করতে সাহায্য করতে পারেন?
টিখন জেলভিস

8
@TikhonJelvis: এটা আসলে বেশ সহজবোধ্য, এটা আপনি (অভিমানী সাধারণের করতে পারবেন Γ = {x : τ}) λy.x : σ → τথেকে ∀ σ. σ → τ, কিন্তু না ∀ τ. σ → τ, কারণ τবিনামূল্যে পরিবর্তনশীল Γএইচএম সম্পর্কিত উইকিপিডিয়া নিবন্ধটি বেশ সুন্দরভাবে ব্যাখ্যা করেছে।
ভিটাস

7
আমি বিশ্বাস করি সম্পর্কিত উত্তরটির অংশটি [Inst]কিছুটা ভুল। এটি এখনও অবধি আমার বোঝাপড়া, তবে সিগমাস [Inst]এবং [Gen]বিধি অনুসারে প্রকারগুলিকে নয়, তবে টাইপ-স্কিমগুলি বোঝায় । সুতরাং অপারেটর একটি আংশিক ক্রম সাব-টাইপিংয়ের সাথে সম্পর্কিত নয় কারণ আমরা এটি ওও ভাষা থেকে জানি। এটি পলিমারফিক মানগুলির সাথে সম্পর্কিত id = λx. x। যেমন একটি ফাংশন জন্য সম্পূর্ণ সিনট্যাক্স হবে id = ∀x. λx. x। এখন, আমাদের স্পষ্টতই একটি থাকতে পারে id2 = ∀xy. λx. x, যেখানে yব্যবহৃত হয় না। তারপরে id2 ⊑ id, যা [Inst]নিয়ম বলে।
আয়নু জি স্টান

71

যদি কেউ কমপক্ষে আমাকে বলতে পারে যে এই চিহ্নগুলির সমুদ্রটির অর্থ কী তা বোঝার জন্য আপনি কোথায় শুরু করবেন

" প্রোগ্রামিং ল্যাঙ্গুয়েজের প্রাক্টিকাল ফাউন্ডেশনস ", অধ্যায় 2 এবং 3, রায় এবং উপার্জনের মাধ্যমে যুক্তির স্টাইলে দেখুন। পুরো বইটি এখন অ্যামাজনে উপলভ্য।

অধ্যায় 2

ইন্ডাকটিভ সংজ্ঞা

সূচক সংজ্ঞা প্রোগ্রামিং ভাষার অধ্যয়নের একটি অপরিহার্য সরঞ্জাম। এই অধ্যায়ে আমরা সূচকীয় সংজ্ঞাগুলির প্রাথমিক কাঠামোটি বিকাশ করব এবং তাদের ব্যবহারের কয়েকটি উদাহরণ দেব। একটি প্রস্তাবনামূলক সংজ্ঞা একটি সেট নিয়ে গঠিত নিয়ম আহরিত জন্য আদালতের রায় , বা গবেষকেরা , ফর্ম বিভিন্ন। রায়গুলি হ'ল নির্দিষ্ট ধরণের এক বা একাধিক সিনট্যাকটিক অবজেক্ট সম্পর্কে বিবৃতি। বিধিগুলি রায়ের বৈধতার জন্য প্রয়োজনীয় এবং পর্যাপ্ত শর্তাদি নির্দিষ্ট করে এবং তাই এর অর্থ পুরোপুরি নির্ধারণ করে।

২.১ রায়

আমরা একটি ধারণা দিয়ে শুরু রায় , অথবা কথন শব্দবিন্যাসের বস্তুর সম্পর্কে। আমরা বিভিন্ন ধরণের রায় ব্যবহার করব, উদাহরণস্বরূপ:

  • n নাট - এন একটি প্রাকৃতিক সংখ্যা
  • n = n1 + n2 - n হল n1 এবং n2 এর যোগফল
  • τ টাইপ - τ এক প্রকার
  • e : τ - এক্সপ্রেশন e এর টাইপ τ τ
  • ev - ভাবের এর মান v হয়

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


53

আমি কীভাবে হিন্দি-মিলনার বিধি বুঝতে পারি?

হিন্ডি-মিলনার হ'ল নিয়মিত ক্যালকুলাস আকারে (প্রাকৃতিক ছাড় নয়) আকারে এমন একটি বিধি রয়েছে যা প্রমাণ করে যে আমরা কোনও প্রকারের (সর্বাধিক সাধারণ) ধরণের ধরণের বিবরণ ছাড়াই প্রোগ্রামটি নির্মাণ থেকে কাটাতে পারি।

প্রতীক এবং স্বরলিপি

প্রথমে, প্রতীকগুলি ব্যাখ্যা করতে এবং অপারেটরের অগ্রাধিকার নিয়ে আলোচনা করব

  • 𝑥 একটি আইডেন্টিফায়ার (অনাড়ম্বরভাবে, একটি পরিবর্তনশীল নাম) হয়।
  • : মানে হ'ল এক প্রকার (অনানুষ্ঠানিকভাবে, একটি উদাহরণ বা "হয়-এ")।
  • 𝜎 (সিগমা) একটি অভিব্যক্তি যা হয় পরিবর্তনশীল বা ফাংশন।
  • এইভাবে 𝑥: " 𝑥 is-a 𝜎 " পড়া হয়
  • এর অর্থ "একটি উপাদান"
  • G (গামা) একটি পরিবেশ।
  • (কথন চিহ্ন) মানে দাবি (অথবা প্রমাণ কিন্তু বিষয়গতভাবে "দাবি" ভাল লেখা।)
  • ⊦ Γ 𝑥 : σ এইভাবে পড়া হয় "Γ যে 𝑥 দাবি হল,-একটি σ "
  • 𝑒 ধরনের প্রকৃত উদাহরণস্বরূপ (উপাদান) হল σ
  • 𝜏 (তাউ) একটি প্রকার: হয় মৌলিক, পরিবর্তনশীল ( 𝛼 ), ক্রিয়ামূলক 𝜏 → 𝜏 ' , বা পণ্য 𝜏 × 𝜏' (পণ্য এখানে ব্যবহৃত হয় না)
  • 𝜏 → 𝜏 ' একটি কার্যকরী ধরণের যেখানে 𝜏 এবং 𝜏' সম্ভাব্য বিভিন্ন ধরণের।
  • 𝑒.𝑒 এর অর্থ 𝜆 ( ল্যাম্বদা ) একটি বেনামে ফাংশন যা একটি আর্গুমেন্ট গ্রহণ করে, 𝑥 , এবং একটি এক্সপ্রেশন প্রদান করে, 𝑒

  • যাক 𝑥 = 𝑒₀ ইন expression এর অর্থ হল অভিব্যক্তি, 𝑒₁ , বিকল্প 𝑒₀ যেখানেই 𝑥 উপস্থিত।

  • ⊑ এর অর্থ পূর্ববর্তী উপাদানটি পরবর্তী উপাদানগুলির একটি উপপ্রকার (অনানুষ্ঠানিক - উপক্লাস )।

  • α একটি টাইপ পরিবর্তনশীল।
  • 𝛼.𝜎 হ'ল একটি প্রকার, ∀ (সকলের জন্য) আর্গুমেন্ট ভেরিয়েবল, 𝛼 , প্রত্যাবর্তন 𝜎 এক্সপ্রেশন
  • ফ্রি (𝚪) এর অর্থ বাহ্যিক প্রসঙ্গে সংজ্ঞায়িত type এর মুক্ত প্রকারের ভেরিয়েবলগুলির একটি উপাদান নয়। (বাউন্ডের ভেরিয়েবলগুলি পরিবর্তনযোগ্য)

লাইনের ওপরের সমস্ত কিছুই ভিত্তি, নীচের সমস্ত কিছুই উপসংহার ( পার্ট মার্টিন-লুফ )

উদাহরণ, উদাহরণস্বরূপ

আমি বিধিগুলি থেকে আরও জটিল উদাহরণ নিয়েছি এবং অপ্রয়োজনীয় প্রথম বন্ধনী প্রবেশ করিয়েছি যা অগ্রাধিকার দেখায়:

  • 𝑥: 𝜎 ∈ 𝚪 লেখা যেতে পারে (𝑥: 𝜎) written 𝚪 𝚪
  • ⊦ Γ 𝑥 : σ Γ লেখা যেতে পারে ⊦ ( 𝑥 : σ )

  • Γ ⊦ দিন 𝑥 = 𝑒₀ মধ্যে 𝑒₁ : τ equivalently Γ হয় ⊦ (( দিন ( 𝑥 = 𝑒₀ ) মধ্যে 𝑒₁ ): τ )

  • ⊦ ⊦ 𝜆𝑥.𝑒 : 𝜏 → 𝜏 ' সমানভাবে 𝚪 ⊦ (( 𝜆𝑥.𝑒 ): ( 𝜏 → 𝜏' ))

তারপরে, দৃ statements় বিবৃতি এবং অন্যান্য পূর্বশর্তগুলি পৃথককারী বৃহত্তর স্থানগুলি পূর্ববর্তী শর্তগুলির একটি সেটকে নির্দেশ করে এবং শেষ পর্যন্ত অনুভূমিক রেখা পৃথকীকরণটিকে উপসংহার থেকে পৃথক করে অগ্রগতির ক্রমটির সমাপ্তি ঘটায়।

নিয়ম

এখানে নীচের নিয়মগুলির ইংরাজী ব্যাখ্যা রয়েছে এবং এরপরে একটি শিথিল পুনঃস্থাপন এবং ব্যাখ্যা রয়েছে।

পরিবর্তনশীল

ভিএআর লজিক ডায়াগ্রাম

প্রদত্ত এক প্রকারের 𝜎 (সিগমা), 𝚪 (গামা) এর একটি উপাদান,
উপসংহার 𝚪 দাবী 𝑥 একটি 𝜎 𝜎

অন্য উপায়ে রাখুন, 𝚪 এ, আমরা জানি 𝑥 টাইপ 𝜎 কারণ type টাইপ 𝜎 ইন 𝚪 𝚪 𝚪

এটি মূলত একটি টাউটোলজি। একটি সনাক্তকারী নাম একটি পরিবর্তনশীল বা একটি ফাংশন।

ফাংশন অ্যাপ্লিকেশন

অ্যাপ লজিক ডায়াগ্রাম

প্রদত্ত 𝚪 অ্যাসেটস 𝑒₀ একটি কার্যকরী ধরণের এবং 𝚪 দাবীগুলি a একটি 𝜏
উপসংহার function ফাংশন প্রয়োগ করে 𝑒₀ থেকে 𝚪 একধরনের ser '

নিয়মটি পুনঃস্থাপন করতে, আমরা জানি যে ফাংশন অ্যাপ্লিকেশনটি 𝜏 'টাইপ করে কারণ ফাংশনে type → 𝜏' টাইপ থাকে এবং টাইপ of এর একটি আর্গুমেন্ট পায় 𝜏

এর অর্থ হ'ল যদি আমরা জানি যে কোনও ফাংশন কোনও প্রকার ফেরত দেয়, এবং আমরা এটি একটি যুক্তিতে প্রয়োগ করি, ফলাফলটি আমাদের জানায় যে প্রকারটি এটি প্রত্যাবর্তিত হয় তার উদাহরণ হতে পারে।

ফাংশন বিমূর্তি

এবিএস লজিক ডায়াগ্রাম

প্রদত্ত 𝚪 এবং type প্রকারের ser সংস্থানগুলি type একটি প্রকার, 𝑥 '
উপসংহার an একটি বেনামি ফাংশন, 𝑥 𝑥 রিটার্নিং এক্সপ্রেশন,। Type → 𝜏' টাইপের 𝚪

আবার, যখন আমরা কোনও ফাংশন দেখি যা that গ্রহণ করে এবং একটি এক্সপ্রেশন ফিরিয়ে দেয় 𝑒, আমরা জানি এটি টাইপ 𝜏 → 𝜏 'কারণ কারণ 𝑥 (a 𝜏) দৃts়ভাবে জানিয়ে দেয় যে a একটি 𝜏'। '।

আমরা যদি জানি যে 𝑥 টাইপ 𝜏 এবং তাই এইভাবে একটি এক্সপ্রেশন type টাইপ 𝜏 'হয় তবে 𝑥 রিটার্নিং এক্সপ্রেশন। এর একটি ফাংশন type → 𝜏' টাইপ হয়।

চলক ঘোষণা দিন

এলইটি লজিক ডায়াগ্রাম

প্রকারের 𝚪 asserts 𝑒₀, প্রকারের 𝜎, এবং 𝚪 এবং 𝑥, প্রকারের 𝜎, asserts lude প্রকারের 𝜏
উপসংহার 𝚪 asserts let𝑥 = 𝑒₀ intype টাইপের 𝜏

আলগাভাবে, 𝑥 ইন 𝑒₁ (এ 𝜏) এর সাথে আবদ্ধ because কারণ 𝑒₀ একটি and, এবং 𝑥 একটি 𝜎 যা দাবি করে 𝜏 একটি 𝑒₁ 𝜏 𝜏

এর অর্থ যদি আমাদের যদি একটি এক্সপ্রেশন থাকে - যা একটি 𝜎 (একটি ভেরিয়েবল বা একটি ক্রিয়াকলাপ) এবং কিছু নাম, also, এছাড়াও একটি 𝜎, এবং টাইপ 𝑒₁ এর একটি এক্সপ্রেশন থাকে তবে আমরা যেখানেই এটি ভিতরে উপস্থিত হয় সেখানে 𝑒₀ এর জন্য প্রতিস্থাপন করতে পারি এর।

ইনস্ট্যান্স

আইএনএসটি লজিক ডায়াগ্রাম

Type 'এবং 𝜎' প্রকারের ser সংস্থাগুলি দেওয়া 𝜎 '
উপসংহার 𝚪 সমাপ্তি 𝚪 টাইপের 𝑒

একটি অভিব্যক্তি, parent মূল প্রকারের 𝜎 কারণ এক্সপ্রেশন 𝑒 সাব টাইপ 𝜎 ', এবং 𝜎 parent' এর মূল ধরনের type '।

উদাহরণস্বরূপ যদি এমন কোনও ধরণের হয় যা অন্য ধরণের একটি উপপ্রকার, তবে এটি সেই সুপার-টাইপের উদাহরণ - আরও সাধারণ ধরণের।

সাধারণীকরণ

GEN লজিক ডায়াগ্রাম

প্রদত্ত 𝚪 অ্যাসের্টস a একটি 𝜎 এবং the of এর মুক্ত ভেরিয়েবলের উপাদান নয়,
উপসংহার 𝚪 দাবী 𝑒, সমস্ত যুক্তি প্রকাশের জন্য টাইপ করুন a প্রকাশ 𝛼 প্রকাশ

সুতরাং সাধারণভাবে, সমস্ত আর্গুমেন্ট ভেরিয়েবল (returning) ফিরতে 𝜎 এর জন্য 𝑒 টাইপ করা হয় because কারণ আমরা জানি যে 𝑒 একটি 𝜎 এবং 𝛼 কোনও মুক্ত পরিবর্তনশীল নয়।

এর অর্থ আমরা ইতিমধ্যে ধারণযোগ্য স্কোপটিতে আবদ্ধ নন (আঞ্চলিক নয় এমন ভেরিয়েবল) এর জন্য সকল প্রকারের আর্গুমেন্ট গ্রহণ করার জন্য একটি প্রোগ্রামকে সাধারণকরণ করতে পারি। এই সীমাবদ্ধ ভেরিয়েবলগুলি পরিবর্তনযোগ্য।

সবগুলোকে একত্রে রাখ

নির্দিষ্ট অনুমান দেওয়া (যেমন কোনও মুক্ত / অপরিজ্ঞাত ভেরিয়েবল, একটি পরিচিত পরিবেশ,) আমরা এর প্রকারগুলি জানি:

  • আমাদের প্রোগ্রামের পারমাণবিক উপাদান (পরিবর্তনশীল),
  • ফাংশন (ফাংশন অ্যাপ্লিকেশন) দ্বারা ফেরত মানগুলি,
  • ফাংশনাল কনস্ট্রাক্টস (ফাংশন অ্যাবস্ট্রাকশন),
  • বাঁধাই করা যাক (পরিবর্তনশীল ঘোষণার দিন),
  • পিতামাতার ধরণের দৃষ্টান্ত (ইনস্ট্যান্টেশন), এবং
  • সমস্ত অভিব্যক্তি (সাধারণীকরণ)।

উপসংহার

এই বিধিগুলি সম্মিলিতভাবে ধরণের টিকা রচনার প্রয়োজন ছাড়াই আমাদেরকে দৃ program়ভাবে জানানো প্রোগ্রামের সর্বাধিক সাধারণ প্রমানের অনুমতি দেয়।


1
হারুন!
ভুরলো

48

স্বরলিপিটি প্রাকৃতিক ছাড় থেকে আসে ।

⊢ প্রতীককে টার্নস্টাইল বলা হয় ।

6 টি নিয়ম খুব সহজ।

Var নিয়মটি বরং তুচ্ছ নিয়ম - এটি বলে যে শনাক্তকারীদের জন্য টাইপ যদি ইতিমধ্যে আপনার ধরণের পরিবেশে উপস্থিত থাকে তবে আপনি যে ধরণের পরিবেশটিকে ঠিক যেমন পরিবেশ থেকে গ্রহণ করেন তা নির্ধারণ করতে।

Appবিধি বলছে যে আপনার যদি দুটি শনাক্তকারী থাকে e0এবং e1এবং তাদের প্রকারগুলি অনুমান করতে পারেন তবে আপনি অ্যাপ্লিকেশনটির ধরণটি নির্ধারণ করতে পারেন e0 e1। নিয়মটি এমনভাবে পড়ে যদি আপনি তা e0 :: t0 -> t1এবং e1 :: t0(একই টি 0!) জানেন তবে অ্যাপ্লিকেশনটি ভাল-টাইপ এবং টাইপটি রয়েছে t1

Absএবং Letল্যাম্বদা-বিমূর্ততা এবং লেট-ইন করার জন্য ধরণের অনুমানের নিয়ম।

Inst বিধি বলছে যে আপনি কোনও সাধারণের চেয়ে কম সাধারণের বিকল্প প্রতিস্থাপন করতে পারেন।


4
এটি নিয়মিত ক্যালকুলাস, প্রাকৃতিক ছাড় নয়।
রোমান চ্যাপলিয়াক

12
@ রোমনচেপলিয়াক ভাল, স্বরলিপিটি অনেকটা একই। উইকিপিডিয়া নিবন্ধটিতে দুটি কৌশলগুলির একটি আকর্ষণীয় তুলনা করা হয়েছে: এন.ইউইকিপিডিয়া.আর / উইকি / প্রাকৃতিক_ডাকশন # পরবর্তী_ক্যালকুলাস । পরবর্তী ক্যালকুলাসটি প্রাকৃতিক ছাড়ের ব্যর্থতার প্রত্যক্ষ প্রতিক্রিয়াতে জন্ম নিয়েছিল, সুতরাং যদি প্রশ্নটি হয় "এই স্বরলিপিটি কোথা থেকে এসেছে", তবে "প্রাকৃতিক ছাড়" প্রযুক্তিগতভাবে আরও সঠিক উত্তর হতে পারে।
ড্যান বার্টন

2
@ রোমনচেপলিয়াক আরেকটি বিবেচনা হ'ল পরের ক্যালকুলাস খাঁটি সিনট্যাকটিক (এ কারণেই এখানে অনেক কাঠামোগত নিয়ম রয়েছে) যদিও এই স্বরলিপিটি নেই। প্রথম নিয়মটি অনুমান করে যে প্রসঙ্গটি একটি সেট থাকে যখন পর্যায়ক্রমে ক্যালকুলাসে এটি একটি সরল সিনট্যাকটিক গঠন।
এনপিকোনকপ

@ চ্যাপলিয়াক আসলে, না, এর কিছু এমন রয়েছে যা দেখতে "পরবর্তি" বলে মনে হচ্ছে তবে এটি পরের ক্যালকুলাস নয়। হাইপার তার পাঠ্যপুস্তকে এটি "উচ্চতর আদেশের রায়" হিসাবে বোঝার বিকাশ করে। এটি সত্যই প্রাকৃতিক ছাড়।
ফিলিপ জেএফ

15

ই ভাবার দুটি উপায় রয়েছে: σ। একটি হ'ল "এক্সপ্রেশন ই টাইপ σ", অন্যটি হ'ল "এক্সপ্রেশন ই এর ক্রমযুক্ত জোড় এবং টাইপ σ"।

এক্সপ্রেশন এবং প্রকারের জোড়গুলির সেট হিসাবে প্রয়োগ করা, এক্সপ্রেশনগুলির প্রকার সম্পর্কে জ্ঞান হিসাবে দেখুন e এবং: σ σ

টার্নস্টাইল ⊢ এর অর্থ বাম দিকের জ্ঞান থেকে আমরা ডানদিকে যা আছে তা অনুমান করতে পারি।

প্রথম নিয়মটি [ভার্] এভাবে পড়তে পারে:
আমাদের জ্ঞানে যদি the জুড়ি ই: Γ থাকে তবে আমরা Γ যে ই টাইপ σ থেকে অনুমান করতে পারি σ

দ্বিতীয় নিয়ম [অ্যাপ] টি পড়তে পারেন:
আমরা যদি from থেকে এই e_0 টাইপটি τ _0 τ 'টাইপ করতে পারি, এবং আমরা from এর থেকে e_1 টাইপটি অনুমান করতে পারি, তবে আমরা from এর থেকে e_1 এর যে অনুমানটি করতে পারি তা হ্রাস করতে পারি টাইপ। '।

এটি Γ, e: write এর পরিবর্তে Γ ∪ {e: σ} লেখার পক্ষে সাধারণ}

তৃতীয় নিয়ম [আবস] এইভাবে পড়তে পারে:
যদি আমরা x: Γ থেকে প্রসারিত করতে পারি তবে এটির e 'টাইপটি কেটে নিতে পারি, তবে আমরা fromx.e টাইপটি ded → τ' টাইপ করতে পারি .x.e টাইপ করতে পারি।

চতুর্থ নিয়ম [চলুন] একটি অনুশীলন হিসাবে বাকি আছে। :-)

পঞ্চম নিয়ম [ইনস্টল] পড়তে পারে:
আমরা যদি from থেকে এই টাইপটি uce 'কে অনুমান করতে পারি, এবং σ' sub এর একটি উপপ্রকার, তবে আমরা from থেকে সেই ইয়ের প্রকারটি ded টাইপ করতে পারি σ

ষষ্ঠ এবং শেষ বিধি [জেনারেল] পড়তে পারেন:
আমরা যদি from থেকে এই টাইপটি ded কে অনুমান করতে পারি, এবং Γ যে কোনও প্রকারের মধ্যে মুক্ত টাইপের পরিবর্তনশীল না হয়, তবে আমরা from থেকে সেই টাইপটি নির্ধারণ করতে পারি Σ σ।

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