Haskell প্রোগ্রাম ডেফিনিশন ও এক্সপ্রেশন দিয়ে গঠিত।
একটি কনস্ট্যান্ট মান name = expression দিয়ে ডিফাইন করা হয়।
five = 5
six = 3 + 3
ফাংশন ডিফাইন করা হয় name parameters... = expression দিয়ে, যেখানে প্যারামিটারগুলো শুধু স্পেস দিয়ে আলাদা করা হয়।
add number1 number2 = number1 + number2
একটি ফাংশন কল করাও একটি এক্সপ্রেশন। এটি করা হয় ফাংশনটির নাম উল্লেখ করে এবং তার প্রতিটি প্যারামিটারের জন্য আর্গুমেন্ট পাস করে, স্পেস দিয়ে আলাদা করা, ঠিক ফাংশন ডেফিনিশনের মতোই।
five = add 2 3
একটি এক্সপ্রেশনের মূল্যায়নের ক্রম নির্দিষ্ট করতে বন্ধনী ব্যবহার করা যায়।
six = add 2 (1 * 4)
twelve = add 2 1 * 4
Haskell কোডের সীমানা নির্দিষ্ট করতে হোয়াইটস্পেস ও ইন্ডেন্টেশন ব্যবহার করে। কোনো এক্সপ্রেশনের অংশ যে কোড, তা ওই এক্সপ্রেশনের শুরুর চেয়ে আরও ভেতরে ইন্ডেন্ট করা উচিত।
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
মডিউল ফাংশন এক্সপোর্ট করে। তার মানে আপনি মডিউলটি তার এক্সপোর্ট স্টেটমেন্টে যে ফাংশনগুলো উপলব্ধ করে, সেগুলো ব্যবহার করতে পারেন। একটি মডিউল শুধু অভ্যন্তরীণ ব্যবহারের জন্য ফাংশনও ডিফাইন করতে পারে। ডিফল্টভাবে, যে ফাংশনগুলো স্পষ্টভাবে এক্সপোর্ট করা হয় না, সেগুলো মডিউলের বাইরে থেকে ব্যবহার করা যায় না।
মডিউলের শুরুতে আমরা মডিউলের নাম উল্লেখ করি। যদি আমাদের Calculator.hs নামের একটি ফাইল থাকে, তাহলে আমাদের মডিউলের নাম রাখা উচিত Calculator। এরপর, আমরা এটি যে ফাংশনগুলো এক্সপোর্ট করে সেগুলো উল্লেখ করি, এবং এর পরে আমরা ফাংশনগুলো লেখা শুরু করতে পারি। তাহলে চলুন এটি দিয়ে শুরু করি।
module Calculator ( add ) where
https://learnyouahaskell.github.io/modules#making-our-own-modules
একটি কমেন্ট হলো Haskell ফাইলের ভেতরে থাকা এমন কিছু টেক্সট, যা কোড হিসেবে ইন্টারপ্রেট করা হয় না।
এটি মূলত আপনার নিজের এবং অন্য প্রোগ্রামারদের পড়ার জন্য বোঝানো হয়েছে।
সিঙ্গেল লাইন কমেন্টের জন্য একটি হালকা সিনট্যাক্স আছে, যা ডাবল ড্যাশের উপর ভিত্তি করে।
মাল্টিলাইন কমেন্টও {- এবং -} ওপেনিং ও ক্লোজিং ডেলিমিটার জোড়া দিয়ে সম্ভব।
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
এই অনুশীলনীর ভূমিকাটি Learn You a Haskell for Great Good! থেকে উদারভাবে ধার নেওয়া হয়েছে, Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License-এর অধীনে।
এই অনুশীলনীতে আপনি কিছু কোড লিখবেন, যা আপনার প্রিয় রান্নার বই থেকে একটি চমৎকার লাসানিয়া রান্না করতে আপনাকে সাহায্য করবে।
আপনার সামনে তিনটি কাজ আছে, যেগুলোর সবই লাসানিয়া রান্নায় ব্যয় হওয়া সময়ের সাথে সম্পর্কিত।
ওভেনে লাসানিয়াটি কত মিনিট থাকা উচিত তা যাচাই করার জন্য expectedMinutesInOven কনস্ট্যান্টটি ডিফাইন করুন। রান্নার বই অনুযায়ী, ওভেনে প্রত্যাশিত সময় মিনিটে ৪০:
expectedMinutesInOven
--> 40
preparationTimeInMinutes ফাংশনটি ডিফাইন করুন, যেটি প্যারামিটার হিসেবে লাসানিয়ায় আপনি যে সংখ্যক স্তর যোগ করেছেন তা নেয় এবং লাসানিয়া প্রস্তুত করতে আপনি কত মিনিট ব্যয় করেছেন তা রিটার্ন করে; ধরে নিন প্রতিটি স্তর প্রস্তুত করতে আপনার ২ মিনিট লাগে।
preparationTimeInMinutes 3
--> 6
elapsedTimeInMinutes ফাংশনটি ডিফাইন করুন, যেটি দুটি প্যারামিটার নেয়: প্রথম প্যারামিটারটি হলো লাসানিয়ায় আপনি যে সংখ্যক স্তর যোগ করেছেন, আর দ্বিতীয় প্যারামিটারটি হলো লাসানিয়া কত মিনিট ধরে ওভেনে আছে। ফাংশনটি রিটার্ন করবে লাসানিয়া রান্না করতে আপনি কত মিনিট কাজ করেছেন, যা হলো প্রস্তুতির সময় মিনিটে এবং এই মুহূর্তে লাসানিয়া ওভেনে যে সময় মিনিটে ব্যয় করেছে তার যোগফল।
elapsedTimeInMinutes 3 20
--> 26
Exercism-এ সাইন আপ করুন, Haskell ট্র্যাকের 107টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।