F#-এ, যে কোনো কিছু, যার একটি টাইপ আছে এবং যাকে ডিফাইন করা যায়, তাকে মান বলা হয়। এর মধ্যে বুলিয়ান, ইন্টিজার আর অ্যারে পড়ে, তবে ফাংশনও পড়ে। ইন্টিজার মান এক বা একাধিক (পরপর) ডিজিট দিয়ে লেখা হয় এবং ডিফল্ট গাণিতিক অপারেটর সমর্থন করে।
একটি মানকে একটি নামে অ্যাসাইন করাকে বাইন্ডিং বলা হয়। বাইন্ডিং অপরিবর্তনীয়, তাই এগুলো অন্য প্রোগ্রামিং ভাষার ধ্রুবকের মতো। বাইন্ডিং let কিওয়ার্ড দিয়ে ডিফাইন করা হয়।
F# যেহেতু একটি স্ট্যাটিকালি টাইপড প্রোগ্রামিং ভাষা, প্রতিটি বাইন্ডিংয়ের একটি টাইপ থাকে। বেশিরভাগ বাইন্ডিংয়ের ক্ষেত্রে টাইপ উল্লেখ করা ঐচ্ছিক, কারণ F#-এর টাইপ ইনফারেন্স সাধারণত মান দেখে টাইপ অনুমান করতে পারে।
// Automatically inferred type
let fingers = 10
ফাংশনও সাধারণ বাইন্ডিং, তবে এক বা একাধিক প্যারামিটার থাকে। একটি ফাংশন স্বয়ংক্রিয়ভাবে তার শেষ এক্সপ্রেশনটি রিটার্ন করে। বেশিরভাগ ফাংশনের ক্ষেত্রেও টাইপ ইনফারেন্স কাজ করে, কারণ এটি বিশ্লেষণ করে ফাংশনটি কোন মান দিয়ে কল করা হয় এবং ফাংশনটি কোন মান রিটার্ন করে।
// Automatically inferred types for parameters and return type
let add x y = x + y
কোনো ফাংশন কল করতে হলে তার নাম লিখে ফাংশনের প্রতিটি প্যারামিটারের জন্য আর্গুমেন্ট পাস করতে হয়।
let five = add 2 3
কোনো বাইন্ডিংয়ের টাইপ অনুমান করা না গেলে কম্পাইলার একটি এরর দেখাবে। এটি ঠিক করতে বাইন্ডিংয়ের টাইপ স্পষ্টভাবে উল্লেখ করুন।
// Explicit type annotation
let fingers: int = 10
// Explicit type annotation (also for parameters)
let add (x: int) (y: int): int = x + y
F#-এ বাইন্ডিং শুধু ডিফাইন করার পরে ব্যবহার করা যায়। ডিফাইন করার আগে কোনো বাইন্ডিং ব্যবহার করলে কম্পাইল এরর হয়।
// Compile error as the add binding has not yet been defined
// let seven = add 3 + 4
let add x y = x + y
স্কোপ নির্ধারণ করতে সিগনিফিক্যান্ট হোয়াইটস্পেস ব্যবহার করা হয়, অর্থাৎ বাইন্ডিংটি যে লাইনে ডিক্লেয়ার করা হয়েছে তার সাপেক্ষে স্পেস দিয়ে কোড ইনডেন্ট করা হয়। ডিফল্ট নিয়ম হলো ইনডেন্টেশনের জন্য চারটি স্পেস ব্যবহার করা।
let toes =
let left = 5
let right = 5
left + right
let multiplyPlusTwo x y =
let product = x * y
product + 2
// Trying to access the left, right or product bindings
// here would result in a compile error
F#-এর বাইন্ডিংগুলো (যার মধ্যে ফাংশনও পড়ে) সাধারণত মডিউলে সাজানো হয়। একটি মডিউল সম্পর্কিত কার্যকারিতাগুলোকে একসাথে রাখে এবং module কিওয়ার্ড দিয়ে ডিফাইন করা হয়। মডিউলের ডেফিনিশন তার বাইন্ডিংগুলোর আগে থাকতে হবে:
module Calculator
let pi = 3.14
let add x y = x + y
F# দুই ধরনের কমেন্ট সমর্থন করে। এক লাইনের কমেন্টের আগে // থাকে এবং মাল্টিলাইন কমেন্ট (* আর *)-এর মাঝে লেখা হয়।