একটি ফাংশন লিখুন f
, এটি একটি ধনাত্মক পূর্ণসংখ্যার সময় নেয় এবং একটি ফাংশন প্রদান করে।
নতুন ফাংশনটি একই রকম হওয়া উচিত f
। যাইহোক, যখন "সমাপ্তি কল" হয়, f
তার পরিবর্তে সমস্ত পূর্ণসংখ্যার যোগফলটি প্রদান করা উচিত।
উদাহরণস্বরূপ, g=f(4)
(যদি f
প্রথম ফাংশন হয়) g
অন্য ফাংশনে সেট করা উচিত । h=g(3)
একই কাজ করবে। যাইহোক, আপনি যখন h
কোনও যুক্তি ছাড়াই কল করেন (বিশদগুলির জন্য নীচে দেখুন), এটি output টি আউটপুট দেয়, কারণ এটি পূর্ববর্তী ফাংশন আর্গুমেন্টের যোগফল। অন্য উপায় রাখুন f(3)(4)() == 7
,।
মনে রাখবেন যে এটির মতো নয় f(3,4)()
।
"টার্মিনেশন কল" নিম্নলিখিত বিকল্পগুলির মধ্যে একটি (আপনার পছন্দ):
- ডাব্লু / ও আর্গুমেন্ট কল করুন
- যুক্তি হিসাবে নাল
- যে কোনও অ-ধনাত্মক মান
ফাংশন কলগুলির নির্বিচারে পরিমাণ সমর্থন করা উচিত, কোনও পূর্বনির্ধারিত সীমা নেই।
এটি গ্যারান্টিযুক্ত যে মোট যোগফল 1'000 এর চেয়ে বড় হবে না।
আমরা ধরে নিতে পারি যে "টার্মিনেশন কল" এর আগে কমপক্ষে একটি কল করা হয়েছিল।
আপনার কোডে স্থিতিশীল, প্রতি-প্রোগ্রামের ভেরিয়েবলগুলি ব্যবহার করা উচিত নয়, সুতরাং একই রানটাইমে একাধিকবার পরীক্ষা চালানো এবং ঠিক একই আচরণ পর্যবেক্ষণ করা উচিত।
উদাহরণ:
f(1)() == 1
f(4)(2)(7)() == 13
f(4)(2)(7)(5)(2)() == 20
q = f(2)(3); b = f(1)(2)(3); q(); b()
?
f(4)
একটি নতুন ফাংশন ফেরত। যদি সেই নতুন ফাংশনটি তর্ক ছাড়াই ডাকা হয়, এটি ফিরে আসে4
, তবে যদি এটি অন্য যুক্তি দিয়ে ডাকা হয় তবে এটি আবার একই শব্দার্থতন্ত্রের সাথে আবার নতুন যুক্তি যুক্ত করে আবার যুক্ত করবে4
।