আমরা সবাই জানি (বা জানা উচিত) যে হাস্কেল ডিফল্টরূপে অলস। অবশ্যই মূল্যায়ন না হওয়া পর্যন্ত কোনও কিছুই মূল্যায়ন করা হয় না। সুতরাং যখন কিছু মূল্যায়ন করা আবশ্যক? এমন কিছু বিষয় রয়েছে যেখানে হাস্কেলকে কঠোর হতে হবে। আমি এইগুলিকে "কঠোরতা পয়েন্টগুলি" বলি, যদিও এই নির্দিষ্ট শব্দটি আমি যেমন ভেবেছিলাম তেমন ব্যাপক নয়। আমার মতে:
হ্যাসকেলে হ্রাস (বা মূল্যায়ন) কেবলমাত্র কঠোরতার পয়েন্টে ঘটে।
কাজেই প্রশ্ন আসে সেই কি, অবিকল , Haskell, এর কষাকষি পয়েন্ট আছে? আমার অন্তর্নিহিততা বলছে যে main
, seq
/ ব্যাংকের নিদর্শন, প্যাটার্ন মিল এবং কোনও IO
ক্রিয়াকলাপই main
প্রাথমিক কঠোরতা পয়েন্ট ness
(এছাড়াও, যদি তাদের "কষাকষি পয়েন্ট", বলা হয় না করছি কি হয় তাদের বলা?)
আমি কল্পনা করি একটি ভাল উত্তরের মধ্যে ডাব্লুএইচএনএফ ইত্যাদি সম্পর্কে কিছু আলোচনা অন্তর্ভুক্ত থাকবে। আমি এটি কল্পনাও করতে পারি যে এটি ল্যাম্বডা ক্যালকুলাসে স্পর্শ করবে।
সম্পাদনা করুন: এই প্রশ্ন সম্পর্কে অতিরিক্ত চিন্তা।
আমি এই প্রশ্নের প্রতিবিম্বিত হিসাবে, আমি মনে করি এটি একটি দৃness়তা বিন্দুর সংজ্ঞা কিছু যুক্ত করা আরও পরিষ্কার হবে। স্ট্রাইনেস পয়েন্টে ভিন্ন ভিন্ন প্রসঙ্গ এবং বিবিধ গভীরতা (বা কঠোরতা) থাকতে পারে। আমার সংজ্ঞাটির পিছনে পড়ে যে "হাস্কেলের হ্রাস কেবল কঠোরতা পয়েন্টগুলিতেই ঘটে", আসুন আমরা এই সংজ্ঞাটিকে এই ধারাটিতে যোগ করি: "তার চারপাশের প্রসঙ্গটি মূল্যায়ন বা হ্রাস করা হলেই একটি কঠোরতা বিন্দু ট্রিগার হয়।"
সুতরাং, আমি আপনাকে যে ধরণের উত্তর চাই তা শুরু করার চেষ্টা করি। main
একটি কঠোরতা পয়েন্ট। এটি বিশেষভাবে এর প্রসঙ্গে প্রাথমিক কঠোরতা পয়েন্ট হিসাবে চিহ্নিত করা হয়েছে: প্রোগ্রাম। প্রোগ্রামটি ( main
এর প্রসঙ্গ) মূল্যায়ন করা হয়, প্রধান এর কঠোরতা পয়েন্ট সক্রিয় করা হয়। প্রধানের গভীরতা সর্বাধিক: এটি অবশ্যই সম্পূর্ণ মূল্যায়ন করা উচিত। মেইন সাধারণত আইও ক্রিয়া দ্বারা গঠিত হয়, যা কঠোরতা পয়েন্টও হয়, যার প্রসঙ্গ হয় main
।
এখন আপনি চেষ্টা করুন: আলোচনা করুন seq
এবং এই পদগুলিতে প্যাটার্ন মেলাচ্ছেন। ফাংশন প্রয়োগের সংক্ষিপ্তসারগুলি ব্যাখ্যা করুন: এটি কীভাবে কঠোর? কেমন হয় না? কি হবে deepseq
? let
এবং case
বিবৃতি? unsafePerformIO
? Debug.Trace
? শীর্ষ স্তরের সংজ্ঞা? কঠোর ডেটা টাইপ? ঠাট্টা নিদর্শন? ইত্যাদি। এই আইটেমগুলির মধ্যে কতটি কেবল সিক বা প্যাটার্ন মিলের ক্ষেত্রে বর্ণনা করা যায়?
seq
এবং প্যাটার্নের মিলগুলি যথেষ্ট, বাকীগুলির সাথে সংজ্ঞাযুক্ত with আমি মনে করি প্যাটার্ন মেলানোIO
কাজগুলির মেরুদণ্ড-কঠোরতার নিশ্চয়তা দেয় ।