লাম্বদা ক্যালকুলাসে λx.λf.fx এর নাম (বিপরীত প্রয়োগের মতো) কী? সংশ্লিষ্ট ফাংশনটির কি প্রোগ্রামিংয়ে একটি আদর্শ নাম আছে?


15

ল্যাম্বদা ক্যালকুলাসে λx.λf.fx এর নাম কী?

সম্পর্কিত ফাংশনটির কি হাস্কেলের মতো ক্রিয়ামূলক প্রোগ্রামিং ভাষাগুলিতে কোনও মানক নাম রয়েছে?

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে এমন কোনও পদ্ধতির কোনও নাম আছে fooযা কোনও ফাংশনকে আর্গুমেন্ট হিসাবে গ্রহণ করে, যেমন x.foo(f)ফিরে আসে f(x)?


3
আপনার অভিধান কিনতে হবে।
রবার্ট হার্ভে

13
কোনটি? কোথায়? কত?
আলেক্সি

4
ডাউনভোট গুলো বুঝি না। এটি আমার কাছে একেবারে যুক্তিসঙ্গত প্রশ্ন বলে মনে হচ্ছে।
জর্জিও

আমি নীচে একটি উত্তর পোস্ট করেছি তবে আমি বুঝতে পেরেছি যে ওপি এই ল্যাম্বডা এক্সপ্রেশনটির নাম কী তাই জিজ্ঞাসা করছে তাই আমি = ডি মুছে ফেলেছি
জেসন

আপনি যে ধারণাটি সম্মিলনকারী হিসাবে পরিচিত, এটি একটি সংযুক্তি হিসাবে পরিচিত, আপনি যদি এন.ইউইকিপিডিয়া.org / উইকি / এসকেআই_কোম্বিনেটর_ক্যালকুলাস সম্পর্কে পরিচিত না হন তবে এখানে পড়ুন though BCKW ঘনিষ্ঠ (এটা এর উল্টানো) কিন্তু না একই en.wikipedia.org/wiki/B,C,K,W_system কেন কিছু মজা আছে এবং যারা combinators সমন্বয় সঙ্গে আসা পর্যন্ত না আপনার ফাংশনে :) ফলাফল
জিমি Hoffa

উত্তর:


9

মধ্যে Haskell, \x.\f.f xহয় flip ($)যা $যেমন পড়া হয় প্রযোজ্য , আমি যেমন পড়তে হবে বিপরীত আবেদন

মোটামুটি /programming/4090168/is-there-an-invers-of-the-haskell-operator এর উপর ভিত্তি করে


এই ভুল ... ফ্লিপ হ'ল \f.\x.\y.f y xসি হ'ল en.wikedia.org/wiki/B,C,K,W_system
জিমি হোফা

এছাড়াও $এইভাবে ফ্লিপ যুক্ত করা একটি আংশিক প্রয়োগ ফাংশন আশা করে যা 2 টি আর্গুমেন্ট গ্রহণ করে যেখানে আপনি কেবল শেষ 2 টি ফ্লিপ করতে যাচ্ছেন তাই আপনি আংশিকভাবে সমস্ত 2 ব্যতীত প্রয়োগ করুন
জিমি হোফা

6
সুতরাং আপনি সন্দেহ করেন যে মডেলো নামকরণ (\f.\x.\y.f y x) (\f.\x.f x)কমে যায় (\x.\f.f x)? যা এটা করে
ড্যান ডি

5

স্ট্যান্ডার্ড কম্বিনেটর ব্যবহার করে আপনি এই ফাংশনটি প্রকাশ করতে পারেন

C I

কোথায়

C f x y = (f y) x

হাস্কেলের মধ্যে এটি হবে

flip id

এখানে idটাইপ বিশেষায়িত হয় (a -> b) -> a -> bএবং flipঅদলবদল a -> bএবং a

আপনি এটি এসকেআই ক্যালকুলাসেও প্রকাশ করতে পারেন :

S (K (S I)) K

এর জন্য কম্বিনেটরগুলি কেটে নেওয়ার জন্য +1। আমি সত্যিই সন্দেহাতীতভাবে সন্দেহ করি না যে এটি একটি চেনা জিনিস, যদিও তিনি সনাক্ত করেছেন যে এটি গির্জার সংখ্যার সাথে সম্পর্কিত কিছু ছিল, আমি ভাবতে আগ্রহী যে সিআই এর যে কোনও জায়গায় গির্জার সংখ্যা অধ্যয়নের ক্ষেত্রে প্রাসঙ্গিক হিসাবে নথিভুক্ত করা হয়েছে
জিমি হোফা

5

মূল অ্যালোঞ্জো চার্চের "ল্যাম্বদা-রূপান্তরকরণের ক্যালকুলি" তে তিনি এই সংযুক্তিকে টি দ্বারা চিহ্নিত করেছেন ।

চার্চ সংখ্যার প্রসঙ্গে, একে এক্সপ বলা হয় । এই ম্যাচ একটি মেয়াদের "অ্যাপ্লিকেশন" জন্য চার্চ দ্বারা ব্যবহৃত "সাধারণভাবে সংক্ষেপে" স্বরলিপি এন একটি মেয়াদ এম : "[ এম এন ]" "(ঘোরা এনএম )"।

আমি প্রোগ্রামিং এ অ্যানালগাস ফাংশনের মানক নাম এখনও শুনিনি heard


3

এটিকে কখনও কখনও থ্রাশ সংযুক্তকারী হিসাবে উল্লেখ করা হয় এবং ক্লোজুরে একে থ্রেড-প্রথম ম্যাক্রো বলা হয় । এটা তোলে প্রাথমিক ব্যবহার আপনি তারা চালানো মধ্যে শৃঙ্খলিত কম্পিউটেশন একটি সিরিজ হিসেবে গণনার প্রকাশ করার অনুমতি রয়েছে। উদাহরণস্বরূপ, একটি মান গ্রহণ x, একটি ফাংশন এটি পাশ f, তারপর ফলাফল ক্ষণস্থায়ী f(x)একটি ফাংশন g, যেমন লিখিত হবে g(f(x))স্ট্যান্ডার্ড ফাংশন কম্পোজিশন ব্যবহার করে (বা g (f x)যদি আপনি অন্তর্নিহিত বন্ধনীগুলির সাথে কাজ করছেন)) বিরাট সংখ্যক শৃঙ্খলিত ফাংশন যখন থাকে তখন এগুলি উদ্বেগজনক হতে পারে কারণ তারা কীভাবে সম্পাদন করে তার বিপরীতে আপনাকে সেগুলি পড়তে হবে। থ্রাশ সংযোজক আপনাকে এটি আলাদাভাবে প্রকাশ করতে দেয়, যদি আমরা থ্রাশ সংযোজকটিকে এইভাবে সংজ্ঞায়িত করি:

T x f = f x
T x f g ... = T (T x f) g ...

তারপরে ভাবটি T x f g hহয়ে যায় h (g (f x))

(যারা আরও তথ্যের পাশাপাশি ভাষা র‍্যাকেটে একটি কংক্রিট প্রয়োগের সন্ধান করছেন তাদের জন্য আমার এই বিষয়ে একটি ব্লগ পোস্ট রয়েছে: র‌্যাকেটে থ্রাশ সংহতি )


2

আমি আশা করি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি, তবে আমি বিশ্বাস করি এটি এমএল ভাষায় (বিপরীত) পাইপ অপারেটর হিসাবে পরিচিত।

[1; 2; 3] |> List.map sq // let it = [1; 4; 9]

বিপরীত পাইপ অপারেটরও রয়েছে যা ক্রিয়াকলাপের ক্রম সহায়তা করে।

printf "The value is.." <| 2 + 3 // let it = "The value is..5"

এটি দরকারী কারণ আনপাইপড ফর্ম

printf "The value is.." 2 + 3 ;; error

কোনও ত্রুটিযুক্ত অপারেটর "The value is.." 2না থাকায় প্রিন্টফ মূল্যায়ন করার চেষ্টা করবে এবং ত্রুটি ঘটবে would +সেই কাজটি করার জন্য, প্রথম বন্ধনী ব্যবহার করুন:

printf "The value is.." (2 + 3) // let it = "The value is..5"

ব্যবহারিক ব্যবহার হিসাবে, |>অপারেটর অবিশ্বাস্যরূপে দরকারী এবং অনেক এমএল এবং এমএল-অনুপ্রাণিত ভাষা যেমন এফ #, লাইভস্ক্রিপ্ট এবং এলিক্সিরের রুটি-মাখন। <|কম সাধারণ এবং সাধারণত ব্যবহৃত হয় যখন এটি পাঠযোগ্যতা বৃদ্ধি করে।

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