Foundationপ্রথম নীতি থেকে
LEVEL 0 · Mathematical Foundations

Function

ফাংশন

এমন একটা relation যেখানে প্রতিটা input-এর ঠিক একটা output — total এবং deterministic। প্রোগ্রামিং-এর অধিকাংশ 'function' গাণিতিক অর্থে function নয়।

f : A → B    ⟺    ∀a ∈ A, ∃! b ∈ B : (a,b) ∈ f

দুইটা শর্ত: total (সব input-এ উত্তর আছে) আর deterministic (একই input, একই output)।

তিনটা শব্দ আলাদা রাখুন:

মানে
Domaininput কোথা থেকে আসে
Codomainoutput কোথায় থাকতে পারে (type যা বলে)
Rangeoutput-এ আসলে যা আসে

Type system codomain বলে, range বলে না — আর এই ফাঁকেই type-correct কিন্তু ভুল কোড বাস করে।

প্রোগ্রামিং-এ প্রায়ই ভাঙে:

def f(x): return 10 / x        # x=0 → total নয়
def g():  return random()      # deterministic নয়
def h(x): counter += 1; return x   # side effect

যেগুলো দুইটা শর্তই মানে তাদের বলে pure function — memoize করা যায়, সমান্তরালে চালানো যায়, পুনর্বিন্যাস করা যায়।

Partial function (domain-এর সব জায়গায় সংজ্ঞায়িত নয়) সামলানোর সেরা উপায় domain সংকুচিত করা — NonZeroU32 -এর মতো — তখন ভুল অবস্থাটা compile-time-এ অসম্ভব হয়ে যায়।