এফ # তে কেন রেকর্ড কীওয়ার্ডের প্রয়োজন?


28

এফ # তে recকিওয়ার্ডটি ব্যবহার করা দরকার । হাস্কেলে কোনও প্রদত্ত ফাংশন পুনরাবৃত্ত হয় কিনা তা স্পষ্ট করে বলার দরকার নেই।

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

উত্তর:


16

হাস্কেল এবং এফ # শব্দার্থবিজ্ঞানের মধ্যে একটি সহজাত পার্থক্য রয়েছে। হাস্কেলে, একটি ফাংশন কল কোনও আসল গণনা সম্পাদন করে না, তবে একটি 'থাঙ্ক' হিসাবে পরিচিত হিপ অবজেক্টকে বরাদ্দ করে। নিজের বা অন্য একটি থাঙ্কের সাথে একটি লিঙ্ক থাকা কোনও বংশের পক্ষে পুরোপুরি ঠিক। তবে এফ # তে একটি ফাংশন কল হ'ল একটি আসল কল, যা অবৈধের মত প্রকাশ করে let x = 1 : 2 : x in x- যেমন এটি xনির্মাণের আগে 1 : 2 : xনির্মাণ করা প্রয়োজন। তবে এটি অসীম তালিকার আরও বা কম যুক্তিসঙ্গত সংজ্ঞা, এটি সংজ্ঞায়নের কিছু উপায় থাকা উচিত exist এখানে শিকড় নিহিত rec। আপনি যদি আরও চান, এসএমএল এবং হাস্কেলের জন্য অপারেশনাল শব্দার্থক অনুসন্ধান করুন এবং পড়ুন - এটি আলাদা।


2
আফাইক, হাস্কেল উদ্দেশ্যমূলকভাবে একটি অপারেশনাল শব্দার্থবিজ্ঞান নেই।
ড্যান_ওয়াটারওয়ার্থ

@ উদ্যান_ ওয়াটারওয়ার্থ অপারেশনাল সিনটিক্স সংজ্ঞায়িত না করে সংকলন করা অসম্ভব।
পারমেক्रा

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

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

19

এই প্রশ্নের উত্তরে এসও তে উত্তর দেওয়া হয়েছে , এবং এটি "রেক" কেন ব্যবহার করা হয় তার জন্য কিছু শক্তিশালী historicতিহাসিক পটভূমি অন্তর্ভুক্ত রয়েছে।

উত্তরোত্তর জন্য গুরুত্বপূর্ণ উদ্ধৃতি এখানে:

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


12

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

সরল let x = y in zসমান ((fun x -> z) y)। একটি রিকার্সিভ লেট আরও জটিল এবং একটি নির্দিষ্ট পয়েন্ট সংযোজক ব্যবহার করে জড়িত।

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