Bob একজন উদাসীন কিশোর। সে মনে করে সে খুব কুল। আর সে কোনো কিছু নিয়ে একদমই উত্তেজিত হয় না। সেটা কুল হতো না।
মানুষ যখন তার সঙ্গে কথা বলে, তখন তার জবাবগুলো বেশ সীমিত।
কেউ ববকে কিছু বললে বা তাকে কোনো প্রশ্ন করলে বব কী উত্তর দেবে, তা বের করাই আপনার কাজ।
বব কেবল পাঁচটি জিনিসের একটি দিয়েই উত্তর দেয়:
আপনাকে responseFor ফাংশনটি ইমপ্লিমেন্ট করতে হবে, যা একটি নির্দিষ্ট ইনপুটের জন্য ববের উত্তর রিটার্ন করে। টাইপগুলো নিয়ে নিশ্চিত না থাকলে আপনি দেওয়া সিগনেচারটি ব্যবহার করতে পারেন, তবে সেটি যেন আপনার সৃজনশীলতাকে সীমিত না করে:
responseFor :: String -> String
এই অনুশীলনীটি সমাধান করতে আপনি পড়ে দেখতে পারেন:
এই অনুশীলনীটি টেক্সট ডেটা নিয়ে কাজ করে। ঐতিহাসিক কারণে Haskell-এর String টাইপ [Char]-এর সমার্থক, অর্থাৎ ক্যারেক্টারের একটি অ্যারে। টেক্সট ডেটা আরও দক্ষভাবে হ্যান্ডেল করার জন্য Text টাইপটি ব্যবহার করা যায়।
এই অনুশীলনীর ঐচ্ছিক সম্প্রসারণ হিসেবে আপনি পারেন:
Haskell-এ স্ট্রিং টাইপগুলো সম্পর্কে পড়ুন।
package.yaml-এ আপনার ডিপেন্ডেন্সির তালিকায় - text যোগ করুন।
Data.Text নিচের পদ্ধতিতে ইমপোর্ট করুন:
import qualified Data.Text as T
import Data.Text (Text)
এখন আপনি যেমন responseFor :: Text -> Text লিখতে পারেন এবং Data.Text-এর কম্বিনেটরগুলোকে যেমন T.isSuffixOf হিসেবে উল্লেখ করতে পারেন।
Data.Text-এর ডকুমেন্টেশন দেখে নিন,
এরপর আপনি Bob.hs-এ String-এর সব জায়গায় Text বসাতে পারেন:
responseFor :: Text -> Text
এই অংশটি সম্পূর্ণ ঐচ্ছিক।
Exercism-এ সাইন আপ করুন, Haskell ট্র্যাকের 107টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।