সিস্টেম এফ লা লা চার্চে, আমরা কি সর্বজনীন বিলোপের জন্য টাইপ অনুক্রমটি স্বয়ংক্রিয় করতে পারি?


9

প্রশ্নটি নীচে রয়েছে। সাধারণত যখন কারও কাছে মতো শব্দ থাকে আমরা উদাহরণস্বরূপ ক্ষেত্রে এই শব্দটিকে কোনও ধরণের প্রয়োগ করে পোড়ালটিকে নির্মূল করতে পারি ।ΛX.t(ΛX.t)[T]t[X:=T]

এখন, ধরুন এটি একটি তীর এবং আমরা এটি একটি আর্গুমেন্ট দিতে চাই, তাহলে আমাদের এই পদটি যথাযথ প্রকারে প্রয়োগ করা দরকার যাতে এটি এই জাতীয় যুক্তি অর্জন করতে পারে। এটি আমি জিজ্ঞাসা করছি যদি আমি স্বয়ংক্রিয়করণ করতে পারি: ফাংশন দুটি শর্তাবলী গ্রহণ এবং এমন ধরণের ফিরিয়ে দেওয়া সম্ভব যে আমাদের প্রতিস্থাপনের জন্য প্রয়োজনীয় প্রকারটি দেয় মধ্যে যেমন যে যুক্তি গ্রহণ করতে পারে ?ff<ΛX.t><r>Xttr

কিছু উদাহরণ:

  • f<ΛX.λxXX.t><λxT.x>=T

  • f<ΛX.λxX.r><(λxR.tT) s>=T


2
আপনি যদি আর্গুমেন্টটিকে সাব / সুপারস্প্রিপ্ট হিসাবে রাখেন না, প্রত্যেকটিতে অন্য সাব / সুপারস্প্রিপ্ট থাকে তবে আপনার প্রশ্নটি আরও কিছুটা পঠনযোগ্য হবে।
ডেভ ক্লার্ক

রেফারেন্সের জন্য: "স্থানীয় টাইপ অনুমান" ( dl.acm.org/citation.cfm?id=345100 ) দ্বারা সমাধান করা দুটি সমস্যার মধ্যে এই জাতীয় সমস্যাটি হ'ল । এছাড়াও প্রাসঙ্গিক dl.acm.org/citation.cfm?id=1086383 হওয়া উচিত ।
ব্লেসরব্ল্যাড

উত্তর:


8

আমি সত্যিই নিশ্চিত নই যে আমি প্রশ্নটি বুঝতে পেরেছি। প্রথমত, আমি আপনার সমস্যাটি নিম্নলিখিত একীকরণের সমস্যাটিতে হ্রাস করার চেষ্টা করি:

একটি ফ্রি (প্রকার) ভেরিয়েবল এক্স এবং একটি প্রকার σ সহ একটি সিস্টেম এফ টাইপ σ (এক্স) দেওয়া হয়েছে σ
এমন কি type (γ) = type ধরণের সন্ধান করা সম্ভব?

এই সমস্যাটি সমাধানের জন্য এখানে একটি সিউডো কোড (একীকরণযোগ্য নয় এমন ব্যতিক্রম উত্থাপিত রয়েছে)।

unify (X, σ) = σ
unify (Y, Y) = Y
unify (τ₁ → τ₂, σ₁ → σ₂) = unify(τ₁,σ₁) → unify(τ₂,σ₂)
unify (∀Y.τ(Y), ∀Y.σ(Y)) = ∀Y.unify(τ(Y),σ(Y)) (with Y a fresh variable)
unify (_,_) = raise Not_unifiable

আপনি প্রমাণ সহ প্রমাণ করতে পারেন যে γ = τ (ইউনিফাইড (τ (এক্স), σ) কাজ করে যদি কেবলমাত্র ব্যতিক্রম না উত্থাপিত হয়)।

এখন আপনার সমস্যার জন্য আপনি নিতে পারেন

f (ΛX.t) (r) = match type of t with "τ₁ → τ₂" => unify (τ₁, type of r) | _ => fail end

(অবশ্যই আপনার ফাংশন এফ আপনার শর্তাবলী খোলা থাকলে আর্গুমেন্ট হিসাবে একটি প্রসঙ্গ হিসাবে গ্রহণ করা উচিত)।

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