Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Functional Programming
  5. Q33. What is function composition?
JavaScriptFunctional Programming

Q33. What is function composition?

ছোট ছোট ফাংশন জোড়া লাগিয়ে বড় ফাংশন বানানো, pipe ও compose-এর কাজ।

Function composition মানে ছোট ছোট ফাংশনকে একটার ফলাফল আরেকটার ইনপুট হিসেবে দিয়ে জোড়া লাগানো, যাতে সব মিলিয়ে একটি বড় ফাংশনের মতো আচরণ করে। প্রতিটি ফাংশন একটিমাত্র কাজ করে, কিন্তু জোড়া লাগলে জটিল লজিক হয়ে ওঠে।

তিনটা ফাংশন জোড়া লাগানোjavascript
javascript
const add = (n) => n + 1;
const double = (n) => n * 2;
const square = (n) => n * n;

// তিনটা মিলিয়ে একটা ফাংশন
const complex = (n) => square(double(add(n)));

console.log(complex(3)); // 64 — কারণ 3 -> 4 -> 8 -> 64

ধাপে ধাপে — ইনপুট 3 আগে add-এ ঢোকে, ফল 4। সেই 4 double-এ গিয়ে 8 হয়, আর সেই 8 square-এ গিয়ে 64 হয়। তাই উত্তর 64।

এই জোড়া লাগানোর জন্য বিশেষ helper ফাংশন লেখা হয়, যার নাম pipe।

pipe দিয়েjavascript
javascript
// pipe — বাম থেকে ডানে কাজ করে
const pipe = (...fns) => (value) =>
  fns.reduce((acc, fn) => fn(acc), value);

const process = pipe(
  (n) => n + 1,   // 3 -> 4
  (n) => n * 2,   // 4 -> 8
  (n) => n * n    // 8 -> 64
);

console.log(process(3)); // 64

pipe কীভাবে কাজ করে তা ধাপে ধাপে দেখি — প্রথমে শুরু মান value নেওয়া হয়। তারপর reduce প্রতিটি ফাংশনের ফলাফল পরের ফাংশনের ইনপুট বানায়, যতক্ষণ না সব ফাংশন শেষ হয় এবং চূড়ান্ত ফলত্র ফেরত হয়।

composejavascript
javascript
// compose — ডান থেকে বামে কাজ করে
const compose = (...fns) => (value) =>
  fns.reduceRight((acc, fn) => fn(acc), value);

const process = compose(
  (n) => n * n,   // 8 -> 64
  (n) => n * 2,   // 4 -> 8
  (n) => n + 1    // 3 -> 4
);

console.log(process(3)); // 64
বাস্তব ব্যবহারjavascript
javascript
// বাস্তব উদাহরণ — ডেটা বিশুদ্ধ করা
const trim = (s) => s.trim();
const toLower = (s) => s.toLowerCase();
const addBang = (s) => s + "!";

const clean = pipe(trim, toLower, addBang);

console.log(clean("   HELLO   ")); // "hello!"
প্র্যাকটিসেjavascript
javascript
// pipeline বানানোর pattern
const validator = (schema) => (data) => {
  const errors = {};

  for (const key in schema) {
    if (!schema[key](data[key])) {
      errors[key] = "ভুল মান";
    }
  }

  return { valid: Object.keys(errors).length === 0, errors };
};

const rules = validator({
  name: (v) => typeof v === "string" && v.length > 0,
  age: (v) => typeof v === "number" && v > 0,
});

console.log(rules({ name: "Rahim", age: 25 }));
বিষয়pipecompose
দিকবাম থেকে ডানেডান থেকে বামে
প্রথম কাজ করেউপরের ফাংশননিচের ফাংশন
পড়তে সহজবেশিকম
সাধারণ ব্যবহারডেটা প্রসেসিংফাংশন তৈরি
মনে রাখুন

Composition ভালো কাজ করে যখন প্রতিটি ফাংশন একটিমাত্র কাজ করে এবং বাইরের কোনো অবস্থার উপর নির্ভর করে না। তাহলে ছোট ছোট ফাংশন জোড়া লাগিয়ে বড় ও পরীক্ষা করা সহজ লজিক তৈরি হয়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Functional Programming বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com