কার্রিং (Currying) হলো প্রোগ্রামিংয়ের একটি পদ্ধতি, যা একটি ফাংশনকে একাধিক আর্গুমেন্ট গ্রহণ করার পরিবর্তে একটির পর একটি আর্গুমেন্ট গ্রহণ করতে বাধ্য করে। এই পদ্ধতিতে একটি ফাংশন একাধিক আর্গুমেন্ট নেওয়ার পরিবর্তে প্রথম আর্গুমেন্ট গ্রহণ করে একটি নতুন ফাংশন রিটার্ন করে, যা পরবর্তী আর্গুমেন্ট গ্রহণ করে এবং এভাবে চলতে থাকে যতক্ষণ না সব আর্গুমেন্ট পাওয়া যায়। কার্রিং মূলত ফাংশনাল প্রোগ্রামিংয়ে ব্যবহৃত হয় এবং এটি কোডের পুনঃব্যবহারযোগ্যতা এবং রিডেবিলিটি বাড়াতে সাহায্য করে।
কার্রিং-এর মূল ধারণা
কার্রিং-এর মাধ্যমে একটি ফাংশনকে এমনভাবে তৈরি করা হয়, যাতে সেটি একবারে সব আর্গুমেন্ট গ্রহণ করার পরিবর্তে এক এক করে গ্রহণ করে। এটি একটি বহু-আর্গুমেন্ট ফাংশনকে একাধিক একক-আর্গুমেন্ট ফাংশনে বিভক্ত করে। উদাহরণস্বরূপ, একটি ফাংশন f(a, b, c) কে কার্রিং করলে এটি f(a)(b)(c) এর মতো আকারে পরিণত হয়।
কার্রিং-এর উদাহরণ
উদাহরণ ১: সাধারণ ফাংশনের কার্রিং
ধরা যাক, আমরা একটি ফাংশন চাই যা তিনটি সংখ্যার যোগফল বের করবে। সাধারণভাবে এই ফাংশনটি হতে পারে:
def add(x, y, z):
return x + y + z
print(add(2, 3, 4)) # আউটপুট: 9কার্রিং প্রয়োগ করলে, এই ফাংশনটিকে আমরা এক এক করে আর্গুমেন্ট নেওয়ার জন্য পরিবর্তন করতে পারি:
def add(x):
def add_y(y):
def add_z(z):
return x + y + z
return add_z
return add_y
# কার্রিং ব্যবহার করে ফাংশন কল করা হচ্ছে
result = add(2)(3)(4)
print(result) # আউটপুট: 9এখানে add ফাংশন প্রথমে x গ্রহণ করে, তারপর y গ্রহণ করার জন্য add_y ফাংশন রিটার্ন করে, এবং শেষে z গ্রহণ করার জন্য add_z ফাংশন রিটার্ন করে।
উদাহরণ ২: কার্রিং ব্যবহার করে প্রি-কনফিগারড ফাংশন তৈরি
কার্রিং ব্যবহার করে কিছু নির্দিষ্ট আর্গুমেন্ট স্থির করে রেখে ফাংশনকে পুনরায় ব্যবহারযোগ্য করা যায়।
def multiply(x):
def multiply_y(y):
return x * y
return multiply_y
# x = 5 নির্ধারণ করে প্রি-কনফিগারড ফাংশন তৈরি করা হলো
double = multiply(2)
print(double(10)) # আউটপুট: 20
print(double(5)) # আউটপুট: 10এখানে multiply(2) একটি প্রি-কনফিগারড ফাংশন তৈরি করেছে যেখানে x এর মান 2 নির্ধারণ করা হয়েছে। ফলে double ফাংশন y এর যেকোনো মান নিয়ে তাকে 2 এর সাথে গুণ করবে।
কার্রিং-এর সুবিধা
১. কোডের পুনঃব্যবহারযোগ্যতা: কার্রিংয়ের মাধ্যমে একই ফাংশনকে বিভিন্ন আর্গুমেন্টসহ বিভিন্ন পরিস্থিতিতে পুনরায় ব্যবহার করা যায়।
২. কোডের রিডেবিলিটি বৃদ্ধি: কার্রিং কোডের রিডেবিলিটি বৃদ্ধি করে কারণ এটি ফাংশন কলের প্রতিটি ধাপে স্পষ্ট অর্থ প্রদান করে।
৩. ফাংশনাল প্রোগ্রামিং সমর্থন: কার্রিং ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডাটা প্রসেসিং ও ফাংশন কম্পোজিশনে কার্যকর।
কার্রিং বনাম পারশিয়াল অ্যাপ্লিকেশন (Partial Application)
কার্রিং এবং পারশিয়াল অ্যাপ্লিকেশন বেশ ঘনিষ্ঠভাবে সম্পর্কিত। পারশিয়াল অ্যাপ্লিকেশন হলো একটি ফাংশনের কিছু নির্দিষ্ট আর্গুমেন্ট স্থির করে নতুন ফাংশন তৈরি করা, তবে এটি একবারে একাধিক আর্গুমেন্টও গ্রহণ করতে পারে।
উদাহরণ: পারশিয়াল অ্যাপ্লিকেশন
from functools import partial
def power(base, exponent):
return base ** exponent
# পারশিয়াল অ্যাপ্লিকেশন ব্যবহার করে নতুন ফাংশন তৈরি করা
square = partial(power, exponent=2)
cube = partial(power, exponent=3)
print(square(5)) # আউটপুট: 25 (5 ** 2)
print(cube(2)) # আউটপুট: 8 (2 ** 3)এখানে partial ফাংশন ব্যবহার করে exponent স্থির করে square এবং cube নামক দুটি নতুন ফাংশন তৈরি করা হয়েছে।
কার্রিং-এর সীমাবদ্ধতা
১. কোডের জটিলতা বৃদ্ধি: কার্রিং কখনো কখনো কোডকে জটিল করে তুলতে পারে, বিশেষ করে যখন ফাংশন কলের ধাপ অনেক বেশি হয়ে যায়।
২. পুনরায় ব্যবহারযোগ্যতা সবার জন্য বোঝা সহজ নয়: কার্রিং ধারণাটি কিছু প্রোগ্রামারের জন্য নতুন হতে পারে, বিশেষ করে যদি তারা ফাংশনাল প্রোগ্রামিংয়ে অভ্যস্ত না হন।
কার্রিং-এর বাস্তব প্রয়োগ
কার্রিং সাধারণত ফাংশনাল প্রোগ্রামিং ভাষাগুলোতে যেমন JavaScript, Haskell, এবং Scala তে প্রচুর ব্যবহার হয়। এটি ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ কৌশল, যা ডাটা প্রসেসিং, ফাংশন কম্পোজিশন এবং প্রি-কনফিগারড ফাংশন তৈরিতে সহায়ক।
সারসংক্ষেপ
কার্রিং ফাংশনাল প্রোগ্রামিংয়ের একটি কৌশল, যা ফাংশনকে একাধিক আর্গুমেন্ট নেওয়ার পরিবর্তে এক এক করে আর্গুমেন্ট গ্রহণ করায়। এটি কোডের রিডেবিলিটি ও পুনঃব্যবহারযোগ্যতা বাড়ায় এবং জটিল সমস্যাকে সহজে সমাধান করতে সাহায্য করে।
কার্রিং (Currying) হলো ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ কৌশল, যেখানে একটি ফাংশন একাধিক প্যারামিটার গ্রহণ না করে, প্রতিবার একটি করে প্যারামিটার গ্রহণ করে এবং নতুন একটি ফাংশন রিটার্ন করে। এভাবে প্রতিটি প্যারামিটার আলাদা আলাদা ভাবে ফাংশনে পাঠানো হয়। Currying এর মাধ্যমে একটি ফাংশনকে ছোট ছোট ফাংশনে বিভক্ত করা হয়, যা একাধিক ধাপে প্রয়োগ করা যায়।
কার্রিং এর ধারণা
কার্রিং এমনভাবে কাজ করে, যেখানে একটি ফাংশন একাধিক প্যারামিটার গ্রহণ না করে, বরং প্রতিবার একটি করে প্যারামিটার গ্রহণ করে। অর্থাৎ, যদি আমাদের কাছে একটি ফাংশন \( f(x, y, z) \) থাকে, তাহলে কার্রিংয়ের মাধ্যমে এটি \( f(x)(y)(z) \) আকারে পরিবর্তিত হবে।
ধরি, একটি ফাংশন দুটি সংখ্যা যোগ করে। কার্রিং এর মাধ্যমে এই ফাংশনকে এমনভাবে তৈরি করা যায় যে এটি একটি সংখ্যা গ্রহণ করবে এবং নতুন একটি ফাংশন রিটার্ন করবে, যা পরবর্তী সংখ্যা গ্রহণ করে যোগফল প্রদান করবে।
কার্রিং এর উদাহরণ (Python)
ধরি, আমাদের একটি সাধারণ যোগফল ফাংশন আছে যা দুটি সংখ্যা যোগ করে।
def add(x, y):
return x + y
print(add(3, 5)) # আউটপুট: 8কার্রিং এর মাধ্যমে এই ফাংশনটিকে এমনভাবে লেখা যায়, যাতে এটি প্রতিবার একটি করে প্যারামিটার গ্রহণ করবে।
def add(x):
def add_y(y):
return x + y
return add_y
add_five = add(5) # এখন add_five একটি ফাংশন যা একটি প্যারামিটার গ্রহণ করবে
print(add_five(3)) # আউটপুট: 8এখানে add(5) প্রথমে x প্যারামিটার গ্রহণ করে এবং একটি ফাংশন add_y রিটার্ন করে, যা y গ্রহণ করে। এভাবে add_five ফাংশনটি প্রথম প্যারামিটার 5 ধরে রাখে এবং পরে y প্যারামিটার গ্রহণ করে পূর্ণ যোগফল প্রদান করে।
কার্রিং এর ভূমিকা
কার্রিং প্রোগ্রামিংয়ে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে ফাংশনাল প্রোগ্রামিংয়ে, যেখানে ফাংশনকে ছোট অংশে ভাগ করে পুনরায় ব্যবহারযোগ্য করা যায়। কার্রিং এর কিছু গুরুত্বপূর্ণ ভূমিকা নিচে দেওয়া হলো:
১. কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি
কার্রিং একটি ফাংশনকে ছোট ছোট অংশে বিভক্ত করে, যা পরবর্তীতে নির্দিষ্ট প্যারামিটারসহ পুনরায় ব্যবহার করা যায়। এটি কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে এবং সহজেই বিভিন্ন প্রেক্ষিতে ব্যবহার করা যায়।
২. ফাংশন কম্পোজিশনে সহায়তা
কার্রিং ফাংশন কম্পোজিশনকে সহজ করে তোলে, কারণ একটি ফাংশন প্রতিটি প্যারামিটার গ্রহণ করার পরে নতুন ফাংশন প্রদান করে, যা পরবর্তীতে অন্য ফাংশনের সাথে যুক্ত হতে পারে।
৩. নির্দিষ্ট প্যারামিটার ধরে রাখা
কার্রিংয়ের মাধ্যমে একটি নির্দিষ্ট প্যারামিটার ধরে রাখা যায় এবং পরবর্তীতে অন্য প্যারামিটার প্রদান করে ফাংশনকে ব্যবহার করা যায়। এটি বিশেষ করে তখন উপকারী, যখন একটি নির্দিষ্ট প্যারামিটার বারবার ব্যবহার করতে হয়।
কার্রিং এর উদাহরণ: প্রাক্টিক্যাল প্রয়োগ
উদাহরণ ১: সাধারণ যোগফল ফাংশন কার্রিংয়ের মাধ্যমে
def multiply(x):
return lambda y: x * y
double = multiply(2) # এখানে double একটি ফাংশন যা সংখ্যা দ্বিগুণ করবে
print(double(5)) # আউটপুট: 10এখানে multiply ফাংশন কার্রিং করা হয়েছে। প্রথমে এটি x প্যারামিটার গ্রহণ করে এবং একটি ফাংশন রিটার্ন করে, যা y প্যারামিটার গ্রহণ করে দ্বিগুণ মান প্রদান করে।
উদাহরণ ২: ফাংশন কম্পোজিশন এবং কার্রিং
def greet(salutation):
return lambda name: f"{salutation}, {name}!"
say_hello = greet("Hello")
print(say_hello("Alice")) # আউটপুট: Hello, Alice!
print(say_hello("Bob")) # আউটপুট: Hello, Bob!এখানে greet ফাংশন প্রথমে salutation প্যারামিটার গ্রহণ করে এবং পরে name প্যারামিটার গ্রহণ করে, যা একটি কাস্টম গ্রীটিং তৈরি করে।
কার্রিং এর সুবিধা
১. কোডের সরলতা বৃদ্ধি: কার্রিং ফাংশনকে সহজ ও পুনঃব্যবহারযোগ্য করে তোলে, যা কোডের রিডেবিলিটি বাড়ায়।
২. ডাটা প্রসেসিং সহজতর করে: একই প্যারামিটার ধরে রেখে বিভিন্ন আউটপুট তৈরি করা যায়, যা ডাটা প্রসেসিংয়ে সহায়তা করে।
৩. মডুলার কোডিং: কার্রিংয়ের মাধ্যমে কোডকে ছোট ছোট মডিউলে ভাগ করা যায়, যা কোড রিইউজেবল এবং মেনটেইনেবল করে তোলে।
সংক্ষেপে, কার্রিং একটি গুরুত্বপূর্ণ প্রোগ্রামিং ধারণা, যা ফাংশনকে ধাপে ধাপে প্যারামিটার গ্রহণ করে একটি নতুন ফাংশন রিটার্ন করার সুযোগ দেয়। এটি কোডকে সরল, পুনঃব্যবহারযোগ্য এবং মডুলার করে তোলে, যা বিশেষ করে ফাংশনাল প্রোগ্রামিংয়ে কার্যকরী।
কার্রিং (Currying) হলো প্রোগ্রামিংয়ের একটি পদ্ধতি যেখানে একটি ফাংশন একাধিক আর্গুমেন্ট নেওয়ার পরিবর্তে প্রতিবার শুধুমাত্র একটি আর্গুমেন্ট গ্রহণ করে এবং প্রতিবারে নতুন একটি ফাংশন রিটার্ন করে। এই রিটার্নকৃত ফাংশনগুলো পরবর্তীতে বাকি আর্গুমেন্টগুলো গ্রহণ করতে পারে। কার্রিং মূলত জটিল ফাংশনগুলোকে ছোট ছোট অংশে বিভাজিত করতে সহায়ক, যা কোডকে পুনরায় ব্যবহারযোগ্য এবং আরও নমনীয় করে তোলে।
কার্রিং কীভাবে কাজ করে?
কার্রিং পদ্ধতিতে একটি ফাংশনকে এমনভাবে বিভাজিত করা হয় যে ফাংশনটি একবারে সব আর্গুমেন্ট নেওয়ার পরিবর্তে প্রতিবার একটি করে আর্গুমেন্ট নেয় এবং প্রতিবার নতুন ফাংশন রিটার্ন করে, যা পরবর্তী আর্গুমেন্ট নিতে প্রস্তুত থাকে। কার্রিং ফাংশনাল প্রোগ্রামিংয়ে বিশেষভাবে ব্যবহৃত হয়, কারণ এটি ফাংশন কম্পোজিশন ও ফাংশনাল অ্যাবস্ট্রাকশনকে সহজ করে।
উদাহরণ (Python):
# সাধারণ ফাংশন যা তিনটি আর্গুমেন্ট গ্রহণ করে
def add(x, y, z):
return x + y + z
print(add(2, 3, 5)) # আউটপুট: 10এই add ফাংশনটি কার্রিংয়ের মাধ্যমে আলাদা করা যেতে পারে যাতে এটি একবারে একটি করে আর্গুমেন্ট গ্রহণ করে।
# কার্রিং প্রয়োগ করে add ফাংশন তৈরি
def curried_add(x):
def add_y(y):
def add_z(z):
return x + y + z
return add_z
return add_y
# কার্রিং ফাংশন ব্যবহার
result = curried_add(2)(3)(5)
print(result) # আউটপুট: 10এখানে curried_add ফাংশনটি প্রতিবার একটি করে আর্গুমেন্ট গ্রহণ করে এবং পরবর্তী ফাংশনকে রিটার্ন করে। curried_add(2) প্রথম আর্গুমেন্ট ২ গ্রহণ করে add_y রিটার্ন করে, যা আবার add_y(3) এর মাধ্যমে দ্বিতীয় আর্গুমেন্ট গ্রহণ করে এবং পরবর্তীতে add_z(5) তৃতীয় আর্গুমেন্ট নিয়ে শেষ ফলাফল প্রদান করে।
কার্রিংয়ের সুবিধা
১. পুনরায় ব্যবহারযোগ্যতা: কার্রিংয়ের মাধ্যমে ফাংশনের কিছু আর্গুমেন্ট নির্দিষ্ট করে রেখে বাকি আর্গুমেন্ট পরবর্তীতে নির্দিষ্ট করা যায়, যা কোডকে পুনঃব্যবহারযোগ্য করে তোলে।
- ফাংশন কম্পোজিশন: কার্রিং ফাংশনকে ছোট ছোট অংশে ভেঙে ফাংশন কম্পোজিশন করা সহজ করে তোলে, যা জটিল কাজকে সহজে সমাধান করতে সহায়ক।
- কোডের নমনীয়তা: কার্রিং ফাংশনগুলোকে আরও ডাইনামিক করে তোলে এবং বিভিন্ন আর্গুমেন্টের ভিত্তিতে কাজ করতে সাহায্য করে।
ব্যবহারিক উদাহরণ
ধরা যাক আমরা একটি ফাংশন তৈরি করতে চাই যা কোনো সংখ্যাকে নির্দিষ্ট মান দিয়ে গুণ করবে। কার্রিংয়ের মাধ্যমে এটি করা হলে বিভিন্ন মান দিয়ে সেটিকে পরিবর্তন করা যাবে।
def multiply_by(x):
return lambda y: x * y
double = multiply_by(2) # গুণ ২ দ্বারা
triple = multiply_by(3) # গুণ ৩ দ্বারা
print(double(5)) # আউটপুট: 10
print(triple(5)) # আউটপুট: 15এখানে multiply_by ফাংশনটি কার্রিং করে বিভিন্ন গুণক তৈরি করা হয়েছে, যেমন double এবং triple। এটি বিভিন্ন কাজে পুনঃব্যবহারযোগ্য।
কার্রিং বনাম পারশিয়াল অ্যাপ্লিকেশন
কার্রিংয়ের সাথে পারশিয়াল অ্যাপ্লিকেশন সম্পর্কিত, তবে এগুলো আলাদা। কার্রিং সব আর্গুমেন্টের জন্য একাধিক ফাংশন রিটার্ন করে, তবে পারশিয়াল অ্যাপ্লিকেশন কোনো ফাংশনের কিছু আর্গুমেন্ট নির্দিষ্ট করে রেখে বাকি আর্গুমেন্টগুলো পরে নির্দিষ্ট করা হয়। Python-এ functools.partial এর মাধ্যমে এটি করা যায়।
উদাহরণ (Python):
from functools import partial
def add(x, y, z):
return x + y + z
add_five = partial(add, 5)
print(add_five(3, 2)) # আউটপুট: 10এখানে add_five নামক পারশিয়াল ফাংশন তৈরি করা হয়েছে যেখানে প্রথম আর্গুমেন্ট ৫ নির্দিষ্ট করা হয়েছে।
কার্রিং পদ্ধতিটি ফাংশনকে ছোট ছোট অংশে ভাগ করে একটি নমনীয় এবং পুনঃব্যবহারযোগ্য কোডবেস তৈরি করতে সহায়ক। এটি ফাংশনাল প্রোগ্রামিংয়ে বহুল ব্যবহৃত একটি কৌশল, যা জটিল ফাংশনগুলোকে সহজে প্রয়োগ করার সুযোগ করে দেয়।
কার্রিং (Currying) হলো ফাংশনাল প্রোগ্রামিংয়ের একটি কৌশল, যেখানে একটি ফাংশন একাধিক আর্গুমেন্ট গ্রহণ করার পরিবর্তে প্রতিবারে একটি আর্গুমেন্ট গ্রহণ করে এবং একটি নতুন ফাংশন রিটার্ন করে, যা পরবর্তী আর্গুমেন্ট গ্রহণ করে। এটি মূলত একটি ফাংশনকে একাধিক আর্গুমেন্ট থেকে একটির আর্গুমেন্টে বিভক্ত করে। কার্রিং ফাংশনাল প্রোগ্রামিংয়ের অন্যতম গুরুত্বপূর্ণ ধারণা এবং এটি কোডকে আরও মডুলার, পুনঃব্যবহারযোগ্য ও কার্যকর করে তোলে।
কার্রিং-এর সুবিধা
১. কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি
কার্রিং একটি ফাংশনকে ধাপে ধাপে আর্গুমেন্ট গ্রহণের সুযোগ দেয়। এতে করে আংশিকভাবে কোনো ফাংশনের কাজ করতে হলে পুরো ফাংশনটি পুনরায় লিখতে হয় না, বরং আংশিক ফাংশন ব্যবহার করে কার্য সম্পাদন করা যায়।
২. ফাংশন কম্পোজিশনের সুবিধা
কার্রিং ফাংশনগুলোকে কম্পোজ করার জন্য কার্যকরী পদ্ধতি, যা কোডকে ছোট ছোট অংশে ভেঙে পুনরায় গঠন করতে সহায়তা করে। এটি ফাংশনাল প্রোগ্রামিংয়ে ফাংশনগুলোর সংমিশ্রণকে আরও সহজ করে তোলে।
৩. কোডের রিডেবিলিটি ও মডুলারিটি বৃদ্ধি
কার্রিং ফাংশনগুলোর আউটপুট হিসেবে প্রতিবার একটি নতুন ফাংশন প্রদান করে, যা কোডকে রিডেবল ও মডুলার করে তোলে। প্রতিটি ধাপে আর্গুমেন্ট প্রদান করলে কী কাজ হবে তা স্পষ্টভাবে দেখা যায়।
৪. আংশিক প্রয়োগের সুবিধা (Partial Application)
কার্রিং ফাংশনগুলো আংশিকভাবে প্রয়োগ করার সুবিধা দেয়, অর্থাৎ পুরো ফাংশনের পরিবর্তে কিছু আর্গুমেন্ট দিয়ে কাজ সম্পন্ন করা যায়। এই পদ্ধতি জটিল সমস্যাগুলোর সমাধান সহজ করতে সহায়তা করে।
কার্রিং-এর বাস্তব উদাহরণ
ধরা যাক, আমাদের একটি ফাংশন দরকার যেখানে তিনটি ভিন্ন সংখ্যার গুণফল বের করা হবে। কার্রিং ব্যবহার করে এই কাজটি ধাপে ধাপে করা যায়।
উদাহরণ (Python এ):
def multiply(x):
def multiply_y(y):
def multiply_z(z):
return x * y * z
return multiply_z
return multiply_y
# কার্রিং ফাংশন কল করে প্রতিটি আর্গুমেন্ট প্রদান করা
result = multiply(2)(3)(4)
print(result) # আউটপুট: 24ব্যাখ্যা:
এখানে multiply ফাংশনটি তিনটি আলাদা ফাংশন প্রদান করে যেখানে প্রতিটি ফাংশন একক আর্গুমেন্ট গ্রহণ করে এবং পরবর্তী ফাংশন রিটার্ন করে। প্রথম multiply(2) কল করা হলে এটি multiply_y ফাংশনকে রিটার্ন করে, যেখানে y এর মান ৩ দিয়ে কাজ হবে এবং সবশেষে multiply_z ফাংশন রিটার্ন করে যেখানে z এর মান ৪ দিয়ে গুণফল বের হবে।
কার্রিং-এর বাস্তব প্রয়োগ
১. আংশিকভাবে ফাংশন প্রয়োগ করা (Partial Application)
ধরা যাক, আমরা একটি ফাংশন তৈরি করতে চাই যা একটি নির্দিষ্ট হার (rate) অনুযায়ী যেকোনো মূল্যে (amount) ট্যাক্স যোগ করবে।
def tax_calculator(rate):
def calculate(amount):
return amount + (amount * rate)
return calculate
# একটি নির্দিষ্ট ১৫% হার সহ ট্যাক্স ক্যালকুলেটর তৈরি করা
add_tax = tax_calculator(0.15)
# বিভিন্ন মূল্যে ট্যাক্স যোগ করা
print(add_tax(100)) # আউটপুট: 115.0
print(add_tax(200)) # আউটপুট: 230.0এখানে, tax_calculator(0.15) ফাংশনটি প্রথমে ১৫% হারের একটি ট্যাক্স ক্যালকুলেটর তৈরি করে, যা বিভিন্ন মূল্যে ট্যাক্স যোগ করতে ব্যবহার করা যায়। এটি আংশিক প্রয়োগের একটি দারুণ উদাহরণ।
২. ফাংশন কম্পোজিশন ও পাইপলাইন
কার্রিং ফাংশনগুলো ফাংশন কম্পোজিশনে সহজে সংযুক্ত হতে পারে, যেখানে একটি ফাংশনের আউটপুট পরবর্তী ফাংশনের ইনপুট হিসেবে কাজ করে।
উদাহরণ:
def add(a):
def add_b(b):
return a + b
return add_b
def multiply(a):
def multiply_b(b):
return a * b
return multiply_b
# কম্পোজিশন করে একটি পাইপলাইন তৈরি করা
result = multiply(2)(add(3)(4)) # আউটপুট: 14, কারণ (3+4) * 2
print(result)এখানে, add এবং multiply ফাংশনকে কার্রিং ব্যবহার করে কম্পোজিশন করা হয়েছে। প্রথমে add(3)(4) এর আউটপুট ৭ আসে, যা multiply(2) এর ইনপুট হিসেবে কাজ করে এবং চূড়ান্ত আউটপুট ১৪ প্রদান করে।
৩. টেমপ্লেট ফাংশন তৈরি করা
কার্রিং ফাংশন ব্যবহার করে নির্দিষ্ট আর্গুমেন্টের উপর ভিত্তি করে টেমপ্লেট ফাংশন তৈরি করা যায়। এটি বিশেষ করে ডেটা প্রসেসিং বা কনফিগারেশন ভিত্তিক কাজে সহায়ক।
def greeting(language):
def greet(name):
if language == "en":
return f"Hello, {name}!"
elif language == "es":
return f"Hola, {name}!"
else:
return f"Hi, {name}!"
return greet
# ইংরেজি ভাষায় গ্রীটিং ফাংশন
english_greet = greeting("en")
print(english_greet("Alice")) # আউটপুট: Hello, Alice!
# স্প্যানিশ ভাষায় গ্রীটিং ফাংশন
spanish_greet = greeting("es")
print(spanish_greet("Carlos")) # আউটপুট: Hola, Carlos!এখানে, greeting ফাংশনটি বিভিন্ন ভাষায় অভিবাদন প্রদানের জন্য টেমপ্লেট ফাংশন তৈরি করে। এটি ফ্লেক্সিবল এবং পুনরায় ব্যবহারযোগ্য কোড লেখায় সহায়তা করে।
সংক্ষেপে কার্রিং এর সুবিধাসমূহ
১. কোড পুনঃব্যবহারযোগ্য: আংশিক প্রয়োগের মাধ্যমে ফাংশনগুলিকে পুনরায় ব্যবহারযোগ্য করে।
২. ফাংশন কম্পোজিশন: কার্রিং ফাংশনগুলোকে সহজে সংযুক্ত করা যায়, যা পাইপলাইন তৈরি করতে সহায়তা করে।
৩. মডুলার প্রোগ্রামিং: কার্রিং ফাংশনগুলোর প্রতিটি স্তরে নির্দিষ্ট কাজ সম্পন্ন করে, যা কোডের মডুলারিটি বাড়ায়।
৪. রিডেবিলিটি বৃদ্ধি: প্রতিটি ধাপে আর্গুমেন্ট নির্ধারণের কারণে কোডের রিডেবিলিটি বৃদ্ধি পায়।
কার্রিং ফাংশনাল প্রোগ্রামিংয়ে একটি শক্তিশালী কৌশল, যা ফাংশনগুলোকে আরও মডুলার, পুনঃব্যবহারযোগ্য, এবং কার্যকরী করে তোলে। বিভিন্ন প্রোগ্রামিং সমস্যায় কার্রিং-এর মাধ্যমে কার্যকর সমাধান পাওয়া যায়।
Read more