ল্যাম্বদা ক্যালকুলাসে অজানা ফাংশনের জন্য ক্রিয়ামূলক সমীকরণগুলি সমাধান করা


14

ল্যাম্বদা ক্যালকুলাসে অজানা ফাংশনগুলির জন্য কার্যকরী সমীকরণগুলি সমাধান করার কোনও কৌশল আছে?

ধরুন আমার পরিচয় ফাংশনটি এরূপ এক্সটেনশিয়ালি সংজ্ঞায়িত হয়েছে:

Ix=x

(এটি that ফাংশনের প্রত্যাশিত আচরণের জন্য একটি সমীকরণ লিখে) এবং এখন আমি এটির সমাধান করতে চাই want কিছু বীজগণিতীয় রূপান্তর করছেন যে ফাংশন জন্য intensional সূত্র পেতে দ্বারা:I

I=λx.x

এটি জানায় যে ফাংশনটি ঠিক কীভাবে প্রত্যাশিত ছিল তা করে (এটি ল্যাম্বদা ক্যালকুলাসে এটি কীভাবে বাস্তবায়ন করা যায়)।

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

Bf(λx.M)=(λx.fM)

যে, "উদ্বুদ্ধ" দেওয়া ফাংশন দেওয়া ল্যামডা ফাংশন মধ্যে ( λ এক্স এম ) তার "শরীর" সামনে এম (যা কিছু অবাধ ল্যামডা অভিব্যক্তি), সম্ভবত এটিকে পৃথক্ গ্রহণ এবং একটি নতুন নির্মাণের, তাই এটি যে একটি প্যারামিটার ফাংশন ওঠে প্রয়োগ করা হয়।f(λx.M)Mf

উত্তর:


13

এটি একটি পরিচিত সমস্যা, হিসাবে পরিচিত উচ্চতর আদেশ একীকরণ

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

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

দুর্ভাগ্যক্রমে, আপনার ফাংশনটি এই প্যাটার্ন খণ্ডে পড়ে বলে মনে হচ্ছে না। এটি বলেছিল, আমি যা দেখছি তা ফাংশন কম্পোজিশনের সাথে বেশ মিল। নিম্নলিখিত ফাংশন আপনার সম্পত্তি সন্তুষ্ট না?

B=λf g x .f (g x)

আমাদের আছে:

  • B f (λx.M)
  • দ্বারা α- গুণমান=B f (λy.[y/x]M)α
  • =λx.f ((λy.[y/x]M)x)
  • =λx.f ([x/y][y/x]M)
  • =λx.f M

1
হ্যাঁ, এটির মতোই মনে হচ্ছে :) মজার বিষয়টি হ'ল, আমি প্রায় সমাধান পেয়েছি তবে কোনও কারণ থেকে আমি ভেবেছিলাম যে কোনও কিছুকে কল করা "এটিকে সম্পাদন করবে", এই অভিব্যক্তিটি ছড়িয়ে দিয়েছিল: q আমি যা হারিয়েছি তা হ'ল যে আমরা ভেরিয়েবলটির বাইরে অন্য ভেরিয়েবলের সাথে আবদ্ধ করতে পারি।(λx.M)
বারবারাওয়ার্ক

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

3
এই উচ্চতর আদেশ একীকরণ হয়? প্রশ্নটি কেবল টাইপ করা ল্যাম্বডা ক্যালকুলাসের চেয়ে টিপিত ল্যাম্বডা ক্যালকুলাস সম্পর্কে বলে মনে হচ্ছে।
পিটার টেলর

2

আমি মনে করি পরিচয় ফাংশনের সমীকরণ সম্পর্কে আমার একটি আংশিক উত্তর আছে:

Ix=x

আমি এটির জন্য সূত্রটি সন্ধান করে আমরা এটি সমাধান করতে , যা রূপটি ( λ পি এম ) এর কিছু হিসাবে এখনও অজানা অভিব্যক্তি এম এর শরীর হিসাবে থাকবে। আসল সমীকরণে এটি আমার জন্য প্রতিস্থাপন করুন :I(λp.M)MI

(λp.M)x=x

তারপরে বাম হাতের ফাংশনটি প্রয়োগ করুন :x

M[p/x]=x

তবে আমাদের এখানে কী আছে? :> এই সমীকরণ প্রকাশের জন্য সূত্র প্রতিটি সংঘটন বদলে পর আমরা খুঁজছেন সেটি পি সঙ্গে এতে এক্স , এবং এটি বলছে যে এটা ডান দিকে মত পরে হওয়া উচিত :) অন্য কথায়, ফাংশন আমরা খুঁজছিলেন ছিল:Mpx

I=(λx.x)

কোনটি অবশ্যই সঠিক উত্তর :)


আসুন সূত্রটি খুঁজতে একই পদ্ধতির চেষ্টা করি । আমরা এটিকে এমনভাবে কাজ করতে চাই যাতে যখন নিজের উপর প্রয়োগ হয়, তখন নিজেই নিজেকে প্রয়োগ করে:ω

ωω=ωω

এখন আসুন জন্য সূত্র খুঁজে ফর্মের যা ( λ এক্স এম ) কিছু এখনো অজানা প্রকাশের জন্য এম । আমরা যে সমীকরণ পাই তা এটিকে প্রতিস্থাপন করা:ω(λx.M)M

(λx.M)ω=ωω

এটি বাম দিকে প্যারামিটারে প্রয়োগ করা এর সূত্র দেয় :M

M[x/ω]=ωω

এই বলে যে প্রতিটি ঘটনা বদলে পর মধ্যে এম সঙ্গে ω এটা উত্পাদিত ωxMω , সুতরাং আমরা অনুমান করতে পারি যে আসল অভিব্যক্তি এমωωM প্রতিকল্পন আগে হওয়া উচিত ছিল xx , সুতরাং আমরা যে ফাংশনটির সন্ধান করছিলাম তা এর মতো হওয়া উচিত:

ω=(λx.xx)

যা আসলে ঘটনা :)


যদিও আমার একটা অনুভূতি রয়েছে যে এটি এত সহজ হয়ে উঠতে পারে কারণ ডান হাতটি ইতিমধ্যে ফর্মটিতে আমরা খুঁজছিলাম।


এম [ x / ω ] = থেকে যাওয়ার কোনও অ্যালগরিদমিক উপায় আছে কি? থেকে ω = ( λ x M[x/ω]=ωωω=(λx.xx)

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

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