খাঁটি ফাংশন: "কোনও পার্শ্ব প্রতিক্রিয়া" "কি সর্বদা একই আউটপুট দেয়, একই ইনপুট দেয়" বোঝায়?


84

দুটি শর্ত যা একটি ফাংশনটিকে pureনিম্নলিখিত হিসাবে সংজ্ঞায়িত করে:

  1. কোনও পার্শ্ব প্রতিক্রিয়া নেই (যেমন শুধুমাত্র স্থানীয় সুযোগে পরিবর্তনের অনুমতি রয়েছে)
  2. সর্বদা একই ইনপুট দেওয়া একই আউটপুট ফেরত

প্রথম শর্তটি যদি সর্বদা সত্য হয় তবে দ্বিতীয় শর্তটি কি কখনও সঠিক নয়?

অর্থাত্ প্রথম শর্তে এটি কি কেবল প্রয়োজনীয়?


4
আপনার প্রাঙ্গণটি নির্দিষ্টভাবে নির্দিষ্ট। "ইনপুট" খুব বিস্তৃত। কার্যাবলী দুটি ধরণের ইনপুট থাকে তা ভাবা যেতে পারে। তাদের যুক্তি এবং "পরিবেশগত" / "প্রাসঙ্গিক"। যদি আপনি এই দুই ধরণের ইনপুটটির মধ্যে পার্থক্য না করেন তবে কোনও ফাংশন যা সিস্টেমের সময় দেয় তাকে খাঁটি হিসাবে বিবেচনা করা যেতে পারে (এটি obv না হলেও)।
আলেকজান্ডার

4
@ আলেকজান্ডার: "খাঁটি ফাংশন" এর প্রসঙ্গে "ইনপুট" বলতে সাধারণত প্যারামিটার / আর্গুমেন্টগুলি বোঝানো হয় যা স্পষ্টভাবে পাস করা হয় (প্রোগ্রামিং ভাষাটি যে পদ্ধতি ব্যবহার করে)। এটি "খাঁটি ফাংশন" এর সংজ্ঞাটির অংশ। তবে আপনি ঠিক বলেছেন, সংজ্ঞাটি মনে রাখা গুরুত্বপূর্ণ।
স্লেস্কে

4
তুচ্ছ কাউন্টার-উদাহরণ: বিশ্বব্যাপী ভেরিয়েবলের মান ফেরত দিন। কোনও পার্শ্ব প্রতিক্রিয়া (বিশ্বব্যাপী কেবল কখনও পড়তে হয়!), তবে এখনও প্রতিবার সম্ভাব্য বিভিন্ন ফলাফল। (যদি আপনি গ্লোবালগুলি পছন্দ করেন না, তবে স্থানীয় ভেরিয়েবলের ঠিকানাটি ফেরত দিন যা রান সময় কল স্ট্যাকের উপর নির্ভর করে)।
পিটার - মনিকা পুনরায়

4
আপনার "পার্শ্ব প্রতিক্রিয়া" এর সংজ্ঞাটি প্রসারিত করতে হবে; আপনি বলে যে একটি বিশুদ্ধ পদ্ধতি নেই উত্পাদন পার্শ্ব প্রতিক্রিয়া, কিন্তু আপনি নোট প্রয়োজন একটি বিশুদ্ধ পদ্ধতি নয় যে গ্রাস পার্শ্ব প্রতিক্রিয়া অন্যত্র উত্পাদিত।
এরিক লিপার্ট

4
@ স্লেসকে সম্ভবত সাধারণত বোঝা গেছে, তবে সেই পার্থক্যের অভাবই ওপির বিভ্রান্তির সঠিক কারণ।
আলেকজান্ডার

উত্তর:


114

এখানে কয়েকটি পাল্টে উদাহরণ দেওয়া হয়েছে যা বাইরের ক্ষেত্র পরিবর্তন করে না তবে তবুও অশুচি বলে বিবেচিত হয়:

  • function a() { return Date.now(); }
  • function b() { return window.globalMutableVar; }
  • function c() { return document.getElementById("myInput").value; }
  • function d() { return Math.random(); } (যা স্বীকার করে PRNG পরিবর্তন করে তবে পর্যবেক্ষণযোগ্য হিসাবে বিবেচিত হয় না)

অ-স্থির অ-স্থানীয় ভেরিয়েবলগুলি অ্যাক্সেস করা দ্বিতীয় শর্তটি লঙ্ঘন করতে সক্ষম হওয়ার জন্য যথেষ্ট।

আমি সর্বদা পবিত্রতার জন্য দুটি শর্তকে পরিপূরক হিসাবে মনে করি:

  • ফলাফল মূল্যায়নের পার্শ্ব রাজ্যে প্রভাব থাকতে হবে না
  • মূল্যায়ন ফলাফল অবশ্যই পাশের রাষ্ট্র দ্বারা প্রভাবিত হবে না

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


4
ধন্যবাদ বার্গি কোনও কারণে আমি ভেবেছিলাম পার্শ্ব প্রতিক্রিয়াগুলির মধ্যে স্থানীয় স্কোপের বাইরে ভেরিয়েবলগুলি পড়া অন্তর্ভুক্ত ছিল তবে আমি অনুমান করি যে এটি যদি বাহ্যিক ভেরিয়েবলগুলি লেখেন তবে এটি কেবলমাত্র একটি পার্শ্ব প্রতিক্রিয়া ।
ম্যাগনাস

17
যদি prompt("you choose")পার্শ্ব প্রতিক্রিয়া না ঘটে তবে আমাদের এক ধাপ পিছিয়ে নেওয়া উচিত এবং পার্শ্ব প্রতিক্রিয়াগুলির অর্থ পরিষ্কার করা উচিত।
হোলার

4
@ ম্যাগনাস হ্যাঁ, এফেক্টের অর্থ হ'ল এটি। আমি আমার জবাবটিও স্পষ্ট করার চেষ্টা করব, আমি এত বড় মনোযোগ আশা করিনি এবং উত্তর কয়েক ডজন ভোটের যোগ্য করে তুলতে চাই :-)
বার্গি

4
আপনারা সকলেই জানেন ম্যাথ.রেন্ডম () কোনও তাপ ডায়োড ফেরায়। এটি আসলে কোনও খারাপ আরএনজি ব্যবহারের জন্য নির্দিষ্ট করা হয়নি।
জোশুয়া

4
দুটি শর্তের মধ্যে আমি শুনেছি প্রাক্তনটিকে "ইফেক্টস" বলা হয়, তবে দ্বিতীয়টিকে "সহকর্মী" বলা হয়। উভয়ই "পার্শ্ব প্রতিক্রিয়া" এবং অপবিত্র। f (coeffects, ইনপুট) -> প্রভাব, আউটপুট Coeffects হ'ল ইনপুট যা বিস্তৃত পরিবেশের পরিবর্তনগুলি থেকে আসে, প্রভাবগুলি আউটপুট যা বিস্তৃত পরিবেশকে পরিবর্তন করে। উদাহরণস্বরূপ, এই মডেলটির সাথে এলম এবং ক্লুজুরস্ক্রিপস পুনরায় ফ্রেম কাজ করে।

30

"স্বাভাবিক" phrasing একটি কি প্রণালী বিশুদ্ধ ফাংশন হয়, পদ হয় উল্লেখ স্বচ্ছতা । কোনও ফাংশন শুদ্ধ হয় যদি এটি স্বচ্ছভাবে স্বচ্ছ হয়

রেফারেনশিয়াল ট্রান্সপারেন্সি , মোটামুটিভাবে, এর অর্থ আপনি প্রোগ্রামটির অর্থ পরিবর্তন না করে প্রোগ্রামটির যে কোনও পয়েন্টে কলটির রিটার্ন মান সহ বা তার বিপরীতে ফিরিয়ে আনতে পারেন।

সুতরাং, উদাহরণস্বরূপ, সি এর printfতুলনামূলক স্বচ্ছ থাকলে এই দুটি প্রোগ্রামের একই অর্থ হওয়া উচিত:

printf("Hello");

এবং

5;

এবং নিম্নলিখিত প্রোগ্রামগুলির সকলের একই অর্থ হওয়া উচিত:

5 + 5;

printf("Hello") + 5;

printf("Hello") + printf("Hello");

কারণ printfএই ক্ষেত্রে 5 টি লিখিত অক্ষরের সংখ্যা প্রদান করে।

এটি voidফাংশনগুলির সাথে আরও স্পষ্ট হয় । আমার যদি কোনও ফাংশন থাকে void fooতবে

foo(bar, baz, quux);

হিসাবে একই হতে হবে

;

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

সুতরাং, এটা পরিষ্কার যে, printfনাও fooস্বচ্ছভাবে স্বচ্ছ বা স্বচ্ছ নয় এবং সুতরাং এগুলির উভয়ই শুদ্ধ নয়। প্রকৃতপক্ষে, কোনও voidফাংশন কখনই প্রাসঙ্গিকভাবে স্বচ্ছ হতে পারে না, যদি না এটি কোনও অপশন না থাকে।

আপনি যেটি দিয়েছেন তার মতো করে পরিচালনা করতে আমি এই সংজ্ঞাটি আরও সহজ মনে করি। এটি আপনাকে যে কোনও গ্রানুলারিটিতে এটি প্রয়োগ করার অনুমতি দেয়: আপনি এটিকে পৃথক এক্সপ্রেশনগুলিতে, ফাংশনে, পুরো প্রোগ্রামগুলিতে প্রয়োগ করতে পারেন। এটি আপনাকে উদাহরণস্বরূপ, কোনও ফাংশন সম্পর্কে কথা বলতে দেয়:

func fib(n):
    return memo[n] if memo.has_key?(n)
    return 1 if n <= 1
    return memo[n] = fib(n-1) + fib(n-2)

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

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


4
একবারে আপনি একমত হয়ে গেলে সেই অশুচিটি পুরো প্রোগ্রামকে প্রভাবিত করে।
আর .. গীটহাব বন্ধ করুন সহায়তা আইসিসি

@ আর .. আপনি কি এমন কোনও উপায়ের কথা ভাবতে পারেন যা সংঘবদ্ধতা বর্ণিত ফিবোনাচি ফাংশনকে বাহ্যিকভাবে অশুদ্ধ করতে পারে? পারছি না। লিখিতভাবে memo[n]আদর্শবান, এবং এটি থেকে পড়া ব্যর্থতা কেবলমাত্র সিপিইউ চক্রকে নষ্ট করে।
ব্রিলিয়ানড

আমি তোমাদের দুজনের সাথেই একমত. অপবিত্রতা করতে সম্পাতবিন্দু সমস্যা হতে, কিন্তু এটা এই নির্দিষ্ট ক্ষেত্রে না।
জার্গ ডব্লু মিটাগ

@ আর .. একটি সম্মতি-সচেতন সংস্করণ কল্পনা করা কঠিন নয়।
ব্যবহারকারী 253751

4
@ ব্রিলিয়ান্ড উদাহরণস্বরূপ, memo[n] = ...প্রথমে একটি অভিধান এন্ট্রি তৈরি করতে পারে এবং তারপরে মানটি এটিতে সঞ্চয় করতে পারে। এটি একটি উইন্ডো ছেড়ে দেয় যার সময় অন্য থ্রেডটি একটি অবিবেচনাবিহীন এন্ট্রি দেখতে পেত।
ব্যবহারকারী 253751

12

আমার কাছে মনে হচ্ছে আপনি যে দ্বিতীয় শর্তটি বর্ণনা করেছেন তা প্রথমের চেয়ে দুর্বল প্রতিবন্ধকতা।

আমি আপনাকে একটি উদাহরণ দেই, ধরুন আপনার কনসোলে লগড করে এমন একটি যুক্ত করার জন্য একটি ফাংশন রয়েছে:

function addOneAndLog(x) {
  console.log(x);
  return x + 1;
}

আপনার সরবরাহিত দ্বিতীয় শর্তটি সন্তুষ্ট: একই ইনপুট দেওয়ার পরে এই ফাংশনটি সর্বদা একই আউটপুট দেয়। এটি তবে একটি খাঁটি ফাংশন নয় কারণ এতে কনসোলে লগিংয়ের পার্শ্ব প্রতিক্রিয়া অন্তর্ভুক্ত রয়েছে।

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

ধরুন আমাদের একটি ফাংশন রয়েছে যা কেবল যোগ করে:

function addOne(x) {
  return x + 1;
}

আমরা প্রতিস্থাপন করতে পারেন addOne(5)সঙ্গে 6আমাদের প্রোগ্রাম এবং কিছুই পরিবর্তন করতে হবে যে কোন জায়গায়।

বিপরীতে, আমরা প্রতিস্থাপন করতে পারি না addOneAndLog(x)6 আচরণ পরিবর্তন না করে আমাদের প্রোগ্রামের কোথাও মানটির সাথে কারণ প্রথম প্রকাশের ফলে কনসোলে কিছু লেখা হয় যেখানে দ্বিতীয়টি হয় না।

আমরা এই অতিরিক্ত আচরণের addOneAndLog(x)কোনওটিকেই বিবেচনা করি যা পার্শ্ব-প্রতিক্রিয়া হিসাবে আউটপুট ফেরত দেওয়ার পাশাপাশি সম্পাদন করে ।


"আমার কাছে মনে হচ্ছে আপনি যে দ্বিতীয় শর্তটি বর্ণনা করেছেন তা প্রথমের চেয়ে দুর্বল বাধা" " না, দুটি শর্তটি যৌক্তিকভাবে স্বাধীন।
স্লেসকে

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

ছোট টাইপো: প্রদত্ত ইনপুটটির জন্য একই আউটপুট ফেরত দেওয়ার পাশাপাশি কোনও পার্শ্ব প্রতিক্রিয়াযুক্ত কোনও ফাংশন কিছুই করতে পারে না
TheInnerLight

বর্তমান সময় ফিরে আসার মতো কিছু সম্পর্কে কি? এর পার্শ্ব প্রতিক্রিয়া নেই, তবে একই ইনপুটটির জন্য এটি আলাদা আউটপুট দেয় does বা আরও সাধারণভাবে, যে কোনও ক্রিয়াকলাপ যেখানে ফলাফল কেবল ইনপুট পরামিতিগুলিতেই নয়, একটি (পরিবর্তনশীল) বৈশ্বিক চলকগুলিতেও নির্ভর করে।
স্লেসকে

4
দেখে মনে হচ্ছে আপনি সাধারণত ব্যবহৃত হয় তার চেয়ে "পার্শ্ব প্রতিক্রিয়া" এর একটি পৃথক সংজ্ঞা ব্যবহার করছেন। একটি পার্শ্ব প্রতিক্রিয়া সাধারণত "মান ফিরিয়ে দেওয়ার পাশাপাশি একটি পর্যবেক্ষণযোগ্য প্রভাব" বা "রাষ্ট্রের পর্যবেক্ষণযোগ্য পরিবর্তন" হিসাবে সংজ্ঞায়িত হয় - উদাহরণস্বরূপ উইকিপিডিয়া দেখুন , সফ্টওয়্যারেনজিনিং.এসএ-র এই পোস্টটি । আপনি সম্পূর্ণরূপে সত্য যে Date.now()শুদ্ধ / উল্লেখযোগ্যভাবে স্বচ্ছ নয়, তবে এর পার্শ্ব-প্রতিক্রিয়া রয়েছে বলে নয় তবে এর ফলাফলটি কেবল তার ইনপুটের চেয়ে বেশি নির্ভর করে।
স্লেসকে

7

সিস্টেমের বাইরে থেকে এলোমেলোতার উত্স হতে পারে। মনে করুন আপনার গণনার সেই অংশটিতে ঘরের তাপমাত্রা অন্তর্ভুক্ত রয়েছে। তারপরে ক্রিয়াকলাপটি সম্পাদনের সময় ঘরের তাপমাত্রার এলোমেলো বাহ্যিক উপাদানের উপর নির্ভর করে প্রতিবার বিভিন্ন ফলাফল পাওয়া যাবে। প্রোগ্রামটি কার্যকর করে রাজ্য পরিবর্তন করা হয় না।

আমি যেভাবেই হোক ভাবতে পারি।


4
আমার মতে, এই "সিস্টেমের বাইরের এলোমেলোতা" পার্শ্ব প্রতিক্রিয়া একটি ফর্ম। এই আচরণগুলির সাথে কাজগুলি "খাঁটি" নয়।
জোসেফ এম ডিওন

2

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

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

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

তবে সমস্ত গাণিতিক ফাংশনগুলিও খাঁটি নয়: প্রতিটি ফাংশন যা t(সময়) প্যারামিটার হিসাবে অশুচি হতে পারে: tফাংশনের সমস্ত প্রভাব এবং স্টোকাস্টিক প্রকৃতি ধারণ করে: সাধারণ ক্ষেত্রে আপনার ইনপুট সিগন্যাল থাকে এবং প্রকৃত মান সম্পর্কে ধারণা রাখে না, এটি করতে পারে এমনকি একটি শব্দ হতে পারে।


2

প্রথম শর্তটি যদি সর্বদা সত্য হয় তবে দ্বিতীয় শর্তটি কি কখনও সঠিক নয়?

হ্যাঁ

নীচে সহজ কোড স্নিপেট বিবেচনা করুন

public int Sum(int a, int b) {
    Random rnd = new Random();
    return rnd.Next(1, 10);
}

এই কোডটি একই প্রদত্ত ইনপুট সেটগুলির জন্য এলোমেলো আউটপুট ফিরিয়ে দেবে - তবে এর কোনও পার্শ্ব প্রতিক্রিয়া নেই।

আপনি একত্রিত হওয়ার সময়Sum উল্লিখিত পয়েন্ট # 1 এবং # 2 উভয়ের সামগ্রিক প্রভাবটির অর্থ: যে কোনও সময় যদি একই আই / পি সহ ফাংশনটি কোনও প্রোগ্রামের ফলাফলের সাথে প্রতিস্থাপন করা হয় তবে প্রোগ্রামের সামগ্রিক অর্থ পরিবর্তন হয় না । এটি রেফারেন্সিয়াল স্বচ্ছতা ছাড়া আর কিছুই নয় ।


তবে এই ক্ষেত্রে, প্রথম শর্তটি যাচাই করা হয়নি: কনসোলে লিখনকে একটি পার্শ্ব প্রতিক্রিয়া হিসাবে বিবেচনা করা হয়, যেহেতু এটি নিজেই মেশিনের অবস্থার পরিবর্তন করে।
ডান পা

এটি দেখানোর জন্য @ রাইটলেগ থেক্স কোনওভাবেই আমি ওপিকে অন্যভাবে ভুল বুঝি। সংশোধন উত্তর।
রাহুলগা_দেব

4
এটি কি এলোমেলো জেনারেটরের অবস্থা পরিবর্তন করে না?
এরিক ডুমিনিল

4
একটি র্যান্ডম সংখ্যা জেনারেট নিজেই একটি পার্শ্ব প্রতিক্রিয়া, যদি না র্যান্ডম সংখ্যা উত্পাদক রাজ্যের স্পষ্টভাবে সরবরাহ করা হয় যা ফাংশন সন্তুষ্ট শর্ত 2. করা হবে
TheInnerLight

4
rndফাংশন, তাই এটা সত্য যে তার রাষ্ট্র পরিবর্তন ফাংশন বিশুদ্ধতা কাছে কোন ব্যাপার না, কিন্তু এটা সত্য যে অব্যাহতি না Randomকন্সট্রাকটর "ইনপুট" ছাড়া অন্য আছে একটি বীজ মান উপায় হিসেবে বর্তমান সময় ব্যবহার aএবং b
স্নেফটেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.