বেনামে ল্যাম্বদা ফাংশন (ক্রিয়ামূলক প্রোগ্রামিং)


10

বেনাম (ল্যাম্বদা) ফাংশনগুলি কী কী? একটি কার্যনির্বাহী প্রোগ্রামিং ভাষাতে বেনামে ফাংশনের আনুষ্ঠানিক সংজ্ঞা কী?

আমার সহজ কথায়, যখন আমি স্কিম / লিস্পে প্রোগ্রামিং করছি আমি বলব একটি বেনাম (ল্যাম্বডা) ফাংশন এমন একটি ফাংশন যা সনাক্তকারীকে আবদ্ধ নয়।

লাম্বদা ফাংশন সম্পর্কে আপনি আনুষ্ঠানিকভাবে যা বলতে পারেন তা কি? আমি মনে করি আরও সাধারণ বিবরণ রয়েছে যা এই সাধারণ সংজ্ঞাতে যুক্ত হতে পারে। দয়া করে বিস্তারিত, এবং আপনাকে ধন্যবাদ!


উত্তর:


10

আমার মতে, এগুলি সম্পর্কে আপনি সত্যই বলতে পারেন।

ধারণাটি হ'ল উচ্চ-আদেশের ভাষায় একটি ফাংশন হ'ল অন্য ধরণের মান। সি তে সনাক্তকারী ছাড়া আপনার যেমন (3 + 4) থাকতে পারে, আপনি স্কিমে কোনও সনাক্তকারী ছাড়াই (ল্যাম্বডা (এক্স) + (3 এক্স)) থাকতে পারেন।

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


11

ল্যাম্বদা ক্যালকুলাসে সমস্ত ফাংশন (পদ) বেনামে থাকে। এটি ল্যাম্বডা ক্যালকুলাসের একটি অপরিহার্য সম্পত্তি: আপনি তাদের নাম না দিয়েই সাধারণ থেকে জটিল ফাংশন রচনা করতে পারেন।

প্রোগ্রামিং ভাষাগুলিতে, বেশিরভাগ ক্ষেত্রেই ফাংশনগুলির নাম দেওয়া বাঞ্ছনীয়, কারণ এটি আমরা মনে করি এবং এটি কোডকে মানুষের জন্য পঠনযোগ্য করে তোলে। কিন্তু সংকলন কার্যনির্বাহী উত্পাদন করার সময় শেষ পর্যন্ত নামগুলি সরিয়ে দেয় (যদি আমরা ডিবাগিংয়ের তথ্য উপেক্ষা করি)।

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


1

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

আসলে, ল্যাম্বদা ক্যালকুলাস দৃষ্টিকোণ থেকে, ল্যাম্বডা এক্সপ্রেশনগুলি বাঁধাই তৈরি করতে ব্যবহৃত খুব সিনট্যাকটিক নির্মাণ const ল্যাম্বদা ক্যালকুলাসে ব্যবহৃত স্বরলিপিটি স্মরণ করুন:

λλএক্সএক্স

যেখানে এবং অভ্যন্তরীণ এক্সপ্রেশন মধ্যে আবদ্ধ । সেখানে প্রতিটি ল্যাম্বডা এক্সপ্রেশন বাইন্ডিংকে সংজ্ঞায়িত করে এবং এভাবে নাম বাইন্ডিংয়ের স্থানীয় প্রসঙ্গ হিসাবে কাজ করে।এক্সএক্স

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

আপনি যদি স্কিম বা লিস্প উপভাষার মতো ভাষার দিকে নজর দেন তবে তাদের খুব তহবিল ল্যাম্বদা ক্যালকুলাস এবং অনেকগুলি বিশেষ ফর্মগুলি সত্যিই চিনির প্রলেপযুক্ত ল্যাম্বডাস।

জন্য concatenative ভাষায় , গল্প কিছুটা ভিন্ন। ল্যাম্বডাস প্রয়োজনীয় নয় এবং প্রকৃতপক্ষে পাল্টা উত্পাদনশীল। বেনামে ল্যাম্বডাস সংজ্ঞায়িত করার বিষয়টি কী, যখন সমস্ত কিছুই একটি ফাংশন ?

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

এই উত্তরে (খারাপভাবে) প্রবর্তিত বিষয়ে কিছু পয়েন্টার:

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