Bool টাইপটি ভাষার মূল ভিত্তিগুলোর একটি।
এটি বর্ণনা করে কোনো কিছু সত্য না মিথ্যা, যার জন্য যথাক্রমে True ও False মান ব্যবহৃত হয়।
&& "AND" আর || "OR" অপারেটর দিয়ে বুলিয়ান মানগুলো জোড়া লাগানো যায়, আর not ফাংশন দিয়ে উল্টে দেওয়া যায়।
কোডে এমন শাখা তৈরি করতেও বুলিয়ান দারুণ কাজে লাগে, যা কেবল নির্দিষ্ট কিছু শর্ত পূরণ হলেই চালানো হয়।
Elm-এ এটি করা হয় একটি if-then-else এক্সপ্রেশন দিয়ে, যা এভাবে ব্যবহার করা হয়।
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের কোয়েস্ট লজিক ইমপ্লিমেন্ট করবেন, যেটি আপনার এক বন্ধু তৈরি করছে। গেমের মূল চরিত্র আনালিন, একজন সাহসী মেয়ে, যার একটি হিংস্র ও বিশ্বস্ত পোষা কুকুর আছে। দুঃখজনকভাবে বিপর্যয় নেমে আসে, কারণ তার সেরা বন্ধু বনে বেরি খুঁজতে গিয়ে অপহৃত হয়। আনালিন তার সেরা বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, এবং চাইলে এই কোয়েস্টে তার কুকুরটিকেও সঙ্গে নেবে।
সেরা বন্ধুর পথের চিহ্ন ধরে কিছু সময় এগোনোর পর সে সেই শিবির খুঁজে পায়, যেখানে তার সেরা বন্ধু বন্দী। দেখা যায় অপহরণকারী দুজন: একজন শক্তিশালী নাইট আর একজন ধূর্ত আর্চার।
অপহরণকারীদের খুঁজে পেয়ে আনালিন ভেবে দেখে, নিচের কোন কোন কাজ সে করতে পারে:
আপনার পাঁচটি কাজ: বনের মধ্যে পাওয়া তিন চরিত্রের অবস্থা এবং আনালিনের পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরের কাজগুলি করা যায় কি না তা নির্ণয়ের লজিক ইমপ্লিমেন্ট করা।
canFastAttack ফাংশনটি ইমপ্লিমেন্ট করুন, যা একটি বুলিয়ান মান নেয় এবং তা দিয়ে বোঝা যায় নাইট জেগে আছে কি না। নাইটের অবস্থার ভিত্তিতে দ্রুত আক্রমণ করা গেলে এই ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
canSpy ফাংশনটি ইমপ্লিমেন্ট করুন, যা তিনটি বুলিয়ান মান নেয় এবং তা দিয়ে যথাক্রমে নাইট, আর্চার ও বন্দী জেগে আছে কি না তা বোঝা যায়। তিন চরিত্রের অবস্থার ভিত্তিতে দলের উপর গুপ্তচরবৃত্তি করা গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
canSignalPrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা দুটি বুলিয়ান মান নেয় এবং তা দিয়ে যথাক্রমে আর্চার ও বন্দী জেগে আছে কি না তা বোঝা যায়। দুই চরিত্রের অবস্থার ভিত্তিতে বন্দীকে সংকেত পাঠানো গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
canFreePrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা চারটি বুলিয়ান মান নেয়। প্রথম তিনটি প্যারামিটার দিয়ে বোঝা যায় যথাক্রমে নাইট, আর্চার ও বন্দী জেগে আছে কি না। শেষ প্যারামিটার দিয়ে বোঝা যায় আনালিনের পোষা কুকুর উপস্থিত আছে কি না। তিন চরিত্রের অবস্থা এবং আনালিনের পোষা কুকুরের উপস্থিতির ভিত্তিতে বন্দীকে মুক্ত করা গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
stealthAttackDamage ফাংশনটি ইমপ্লিমেন্ট করুন, যা একটি বুলিয়ান মান নেয় এবং তা দিয়ে বোঝা যায় আনালিন ধরা পড়েছে কি না। সে ধরা পড়লে এই ফাংশনটি ৭ রিটার্ন করে, নাহলে ১২।
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Exercism-এ সাইন আপ করুন, Elm ট্র্যাকের 28টি কনসেপ্ট110টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।