অলস মূল্যায়নের ধারণাটি কেন কার্যকর?


30

মনে হচ্ছে এক্সপ্রেশনগুলির অলস মূল্যায়নের ফলে কোনও প্রোগ্রামার তাদের কোডটি কার্যকর করা হয় এমন ক্রমের উপর নিয়ন্ত্রণ হারিয়ে ফেলতে পারে। এটি কেন প্রোগ্রামার দ্বারা গ্রহণযোগ্য বা পছন্দসই হবে তা বুঝতে আমার সমস্যা হচ্ছে।

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


10
বেশিরভাগ ক্ষেত্রে এটি কোনও বিষয় নয়। অন্য সকলের জন্য আপনি কেবল কঠোরতা প্রয়োগ করতে পারেন।
ক্যাট প্লাস প্লাস

22
বিশুদ্ধরূপে হ্যাশেলের মতো কার্যকরী ভাষার মূল বক্তব্য হ'ল কোডটি চালিত হওয়ার সময় আপনাকে বিরক্ত করার দরকার নেই, কারণ এটি পার্শ্ব-প্রতিক্রিয়া মুক্ত।
বিটমাস্ক

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

6
শিরোনামে থাকা প্রশ্ন ("অলস মূল্যায়ন কেন ব্যবহার করবেন?") শরীরের প্রশ্নের তুলনায় খুব আলাদা ("আপনি কীভাবে অলস মূল্যায়ন ব্যবহার করবেন?")। প্রাক্তনদের জন্য, এই সম্পর্কিত প্রশ্নের আমার উত্তর দেখুন ।
ড্যানিয়েল ওয়াগনার

1
অলসতা যখন দরকারী তখন একটি উদাহরণ: হাস্কেলের মধ্যে অলসতার কারণে জটিলতা head . sortরয়েছে O(n)(না O(n log n))। দেখুন অলস মূল্যায়ন এবং সময় জটিলতা
পেটর পুডলিক

উত্তর:


62

উত্তর অনেক অসীম তালিকা এবং গুনতি unevaluated অংশ থেকে কার্য সম্পাদনে লাভ ভালো জিনিস মধ্যে যাওয়া হয়, কিন্তু এই আলস্য জন্য বৃহত্তর প্রেরণা হারিয়েছে: modularity এর

ক্লাসিক যুক্তি জন হিউজেসের "কেন ফাংশনাল প্রোগ্রামিং ম্যাটারস" (পিডিএফ লিংক) -তে খুব প্রশংসিত কাগজে প্রকাশিত হয়েছে । সেই কাগজটির মূল উদাহরণ (বিভাগ 5) আলফা-বিটা অনুসন্ধান অ্যালগরিদম ব্যবহার করে টিকিট-টাক খেলছে। মূল বিষয়টি হ'ল (পৃষ্ঠা 9):

[অলস মূল্যায়ন] একটি জেনারেটর হিসাবে এমন একটি প্রোগ্রামকে মডুলাইজ করার জন্য ব্যবহারিক করে তোলে যা প্রচুর পরিমাণে উত্তর তৈরি করে এবং উপযুক্ত বাছাইকারী একটি নির্বাচক।

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

উত্সাহী ভাষায়, আপনি এটি এভাবে লিখতে পারবেন না কারণ আপনি সম্ভবত গাছটি উত্পন্ন করতে খুব বেশি সময় এবং স্মৃতি ব্যয় করবেন। সুতরাং আপনি শেষ পর্যন্ত হয়:

  1. একই ফাংশনে প্রজন্ম এবং খরচ একত্রিত করা;
  2. এমন একটি প্রযোজক লিখছেন যা কেবলমাত্র নির্দিষ্ট গ্রাহকদের জন্য অনুকূলভাবে কাজ করে;
  3. আপনার অলসতার নিজস্ব সংস্করণটি কার্যকর করা।

আরও তথ্য বা একটি উদাহরণ দয়া করে। এটি আকর্ষণীয় শোনাচ্ছে।
অ্যালেক্স নাই

1
@ অ্যালেক্সনি: জন হিউজ পেপারে আরও তথ্য রয়েছে। একাডেমিক কাগজ হওয়া সত্ত্বেও --- এবং তাই সন্দেহজনকভাবে সন্দেহজনক --- এটি আসলে খুব অ্যাক্সেসযোগ্য এবং পঠনযোগ্য। যদি এটির দৈর্ঘ্যের জন্য না হয় তবে এটি সম্ভবত এখানে উত্তর হিসাবে মাপসই হবে!
টিখন জেলভিস

সম্ভবত এই উত্তরটি বুঝতে, একটি অবশ্যই হিউজেসের কাগজটি পড়তে হবে ... তা না করে, আমি এখনও এবং কেন অলসতা এবং সামঞ্জস্যতা সম্পর্কিত তা দেখতে ব্যর্থ হয়েছি।
stakx

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

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

32

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

যখন কোনও অভিব্যক্তি পার্শ্ব-প্রতিক্রিয়া মুক্ত হয়, ক্রমগুলি যাতে ক্রিয়াকলাপগুলি মূল্যায়িত হয় সেগুলি তাদের মানকে প্রভাবিত করে না, সুতরাং প্রোগ্রামটির আচরণ ক্রম দ্বারা অর্ডার দ্বারা প্রভাবিত হয় না। সুতরাং আচরণটি পুরোপুরি অনুমানযোগ্য।

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


15
এই কারণেই কেবল হাস্কেলের মতো "প্রয়োগিত বিশুদ্ধতা" সহ ভাষাগুলি ডিফল্টরূপে সর্বত্র অলসতার সমর্থন করে। স্কেলার মতো "উত্সাহিত বিশুদ্ধতা" ভাষার প্রোগ্রামারকে স্পষ্ট করে বলতে হবে যে তারা কোথায় অলসতা চায়, এবং প্রোগ্রামারকে এটা নিশ্চিত করতে হবে যে অলসতা সমস্যার কারণ হবে না। একটি ভাষা যার ডিফল্টরূপে অলসতা ছিল এবং অনিচ্ছুক পার্শ্ব-প্রতিক্রিয়া রয়েছে তা অবশ্যই অনুমানযোগ্যভাবে প্রোগ্রাম করা কঠিন।
বেন

1
অবশ্যই আইও ব্যতীত অন্য মনাদগুলিও পার্শ্ব প্রতিক্রিয়া সৃষ্টি করতে পারে
জে.কে।

1
@jk কেবল আইও বাহ্যিক পার্শ্ব প্রতিক্রিয়া ঘটাতে পারে ।
dave4420

@ ডেভ 4420 হ্যাঁ তবে এই উত্তরটি যা বলে তা নয়
জে কে।

1
@ জেকে হ্যাস্কেল আসলে না। আইও (বা আইও এর উপর ভিত্তি করে) ব্যতীত কোনও মোনাদের পার্শ্ব প্রতিক্রিয়া নেই। এবং এটি কেবল কারণ সংকলক IO কে আলাদাভাবে আচরণ করে। এটি আইওকে "অপরিবর্তনীয় বন্ধ" হিসাবে মনে করে। মনডস নির্দিষ্ট নির্বাহী আদেশ নিশ্চিত করার একমাত্র (চালাক) উপায় (যাতে ব্যবহারকারী "হ্যাঁ" প্রবেশ করার পরে কেবল আপনার ফাইলটি মুছে ফেলা হবে )।
স্কার্ফ্রিজ

22

আপনি যদি ডাটাবেসগুলির সাথে পরিচিত হন তবে ডেটা প্রক্রিয়া করার খুব ঘন ঘন উপায়:

  • মত একটি প্রশ্ন জিজ্ঞাসা করুন select * from foobar
  • আরও তথ্য থাকা অবস্থায়, করুন: ফলাফলের পরবর্তী সারিটি পান এবং এটি প্রক্রিয়া করুন

ফলাফল কীভাবে উত্পন্ন হয় এবং কোন উপায়ে (সূচি? সম্পূর্ণ টেবিল স্ক্যান?), বা কখন (যখন জিজ্ঞাসা করা হচ্ছে তখন সমস্ত ডেটা একবারে বা বর্ধমানভাবে উত্পন্ন করা উচিত?) আপনি নিয়ন্ত্রণ করেন না। আপনারা যা জানেন কেবল তা হ'ল: যদি আরও ডেটা থাকে তবে আপনি এটি চাইলে তা পাবেন।

অলস মূল্যায়ন একই জিনিসটির খুব কাছাকাছি। বলুন যে আপনি হিসাবে অসীম তালিকা সংজ্ঞায়িত করা হয়েছে। ফিবোনাচি ক্রম - আপনার যদি পাঁচটি সংখ্যা প্রয়োজন হয় তবে আপনি পাঁচটি সংখ্যা গণনা করবেন; আপনার যদি 1000 প্রয়োজন হয় তবে আপনার 1000 পাবেন The কৌশলটি হ'ল রানটাইমটি কোথায় এবং কখন সরবরাহ করবে তা জানে। এটি খুব, খুব সহজ।

(জাভা প্রোগ্রামাররা আইট্রেটারদের সাথে এই আচরণটি অনুকরণ করতে পারে - অন্যান্য ভাষাগুলিতেও এর কিছু মিল থাকতে পারে)


ভাল যুক্তি. উদাহরণস্বরূপ Collection2.filter()(পাশাপাশি সেই শ্রেণীর অন্যান্য পদ্ধতিগুলিও) অলস মূল্যায়ন কার্যকর করে: ফলাফলটি "সাধারণ" দেখতে একটি সাধারণ হিসাবে দেখা যায় Collection, তবে মৃত্যুদন্ডের ক্রমটি স্ব-স্বজ্ঞাত (বা কমপক্ষে অ-স্পষ্ট) হতে পারে। এছাড়াও, yieldপাইথনে রয়েছে (এবং সি # তে একটি অনুরূপ বৈশিষ্ট্য, যা আমি এর নামটি মনে করি না) যা সাধারণ আইট্রেটারের চেয়ে অলস মূল্যায়নকে সমর্থন করার আরও কাছাকাছি।
জোচিম সৌর

সি @JoachimSauer # তার ফলন প্রত্যাবর্তন, অথবা অবশ্যই আপনি prebuild linq oprerators ব্যবহার করতে পারেন, যার প্রায় অর্ধেক অলস
জে।

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

13

প্রথম 2000 ব্যবহারকারীদের তালিকার জন্য আপনার ডাটাবেস জিজ্ঞাসা করার বিষয়ে বিবেচনা করুন যাদের নাম "আব" দিয়ে শুরু হয় এবং 20 বছরেরও বেশি বয়সী। এছাড়াও তারা অবশ্যই পুরুষ হতে হবে।

এখানে একটি ছোট চিত্র।

You                                            Program Processor
------------------------------------------------------------------------------
Get the first 2000 users ---------->---------- OK!
                         --------------------- So I'll go get those records...
WAIT! Also, they have to ---------->---------- Gotcha!
start with "Ab"
                         --------------------- NOW I'll get them...
WAIT! Make sure they're  ---------->---------- Good idea Boss!
over 20!
                         --------------------- Let's go then...
And one more thing! Make ---------->---------- Anything else? Ugh!
sure they're male!

No that is all. :(       ---------->---------- FINE! Getting records!

                         --------------------- Here you go. 
Thanks Postgres, you're  ---------->----------  ...
my only friend.

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

প্রথম 2000 ব্যবহারকারীকে পাওয়ার বিপরীতে, তাদের ফিরিয়ে দেওয়া, তাদের "আব" জন্য ফিল্টার করে, তাদের ফিরিয়ে দেওয়া, 20 বছরেরও বেশি জন্য ফিল্টার করে, তাদের ফিরিয়ে দেওয়া, এবং পুরুষদের জন্য ফিল্টারিং এবং অবশেষে তাদের ফিরিয়ে দেওয়া।

সংক্ষেপে অলস লোডিং।


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

আমার পোস্ট করা উত্তরটি আপনার মন্তব্যের মতোই একই কথা বলছে saying
সার্জেসার্গ

এটি একটি খুব ভদ্র প্রোগ্রাম প্রসেসর।
জুলিয়ান

9

অভিব্যক্তিগুলির অলস মূল্যায়নের ফলে প্রদত্ত কোডের একটি ডিজাইনের ডিজাইনার তাদের কোডটি কার্যকর করার ক্রমটির উপর নিয়ন্ত্রণ হারাবে।

ফলাফলটি একইরূপে এক্সপ্রেশনকে মূল্যায়ন করা হয় সে বিষয়ে ডিজাইনারের উচিত নয়। মূল্যায়ন স্থগিত করে, কিছু অভিব্যক্তি পুরোপুরি মূল্যায়ন করা এড়ানো সম্ভব হতে পারে, যা সময় সাশ্রয় করে।

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


5

অলস মূল্যায়নের জন্য বেশ কিছু যুক্তি রয়েছে যা আমি মনে করি বাধ্য are

  1. পরিচ্ছন্নতা অলস মূল্যায়নের সাহায্যে আপনি কিছু অংশে কোড ভেঙে ফেলতে পারেন। উদাহরণস্বরূপ, ধরুন আপনার কাছে "তালিকার তালিকার উপাদানগুলির প্রথম দশটি পরস্পরকে খুঁজে পেতে সমস্যা রয়েছে যেমন পারস্পরিক ক্রিয়াকলাপ ১ এর চেয়ে কম হয়" " হাস্কেলের মতো কিছুতে আপনি লিখতে পারেন

    take 10 . filter (<1) . map (1/)
    

    তবে এটি কেবল একটি কঠোর ভাষায় ভুল, কারণ আপনি যদি এটি দেন তবে আপনি [2,3,4,5,6,7,8,9,10,11,12,0]শূন্য দ্বারা বিভাজক হবেন। বাস্তবে এটি কেন দুর্দান্ত for

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

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

  4. অলস মূল্যায়ন ব্যবহার করে বিশুদ্ধতা ফোর্সকে একটি অনির্বাচিত উপায়ে মোট ব্যথা করে, কারণ আপনি যেমন এটি রেখেছেন, প্রোগ্রামার নিয়ন্ত্রণ হারিয়ে ফেলে put এটি একটি ভাল জিনিস। রেফারেন্সিয়াল স্বচ্ছতা প্রোগ্রামিং, রিফ্র্যাকচারিং এবং প্রোগ্রামগুলি সম্পর্কে বিতর্ককে এত সহজ করে তোলে। কঠোর ভাষাগুলি অনিবার্যভাবে অপরিষ্কার বিটগুলির চাপের কাছে আবদ্ধ - হাস্কেল এবং ক্লিন কিছু সুন্দরভাবে প্রতিরোধ করেছে। এটি বলার অপেক্ষা রাখে না যে পার্শ্ব প্রতিক্রিয়া সর্বদা খারাপ evil তবে এগুলি নিয়ন্ত্রণ করা এতটাই দরকারী যে এই কারণেই অলস ভাষা ব্যবহার করার পক্ষে যথেষ্ট।


2

মনে করুন অফারটিতে আপনার অনেক ব্যয়বহুল গণনা রয়েছে, তবে জানেন না আসলে কোনটি প্রয়োজন হবে, বা কোন ক্রমে। গ্রাহককে কী পাওয়া যায় তা বের করতে বাধ্য করতে এবং এখনও করা হয়নি এমন গণনা ট্রিগার করার জন্য আপনি একটি জটিল মা-মে-প্রোটোকল যুক্ত করতে পারেন। অথবা আপনি কেবল এমন একটি ইন্টারফেস সরবরাহ করতে পারেন যা কাজ করে যেমন গণনাগুলি সম্পন্ন হয়েছিল।

এছাড়াও, ধরুন আপনার অনন্ত ফলাফল রয়েছে। উদাহরণস্বরূপ সমস্ত প্রাইমের সেট। এটি সুস্পষ্ট যে আপনি সেটটি আগে থেকেই গণনা করতে পারবেন না, তাই প্রাইমসের ডোমেনে কোনও পরিচালনা অলস হতে হবে।


1

অলস মূল্যায়নের মাধ্যমে আপনি কোড সম্পাদন সম্পর্কে নিয়ন্ত্রণ হারাবেন না, এটি এখনও একেবারে নির্বিচারক is যদিও এটির সাথে ব্যবহার করা শক্ত।

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

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