OCaml কীভাবে শিখবেন

একেবারে শূন্য থেকে OCaml শুরু করার একটি সংক্ষিপ্ত পরিচয়


Exercism অনুশীলনী আর ফিডব্যাক দেয়, তবে প্রথমবার OCaml শিখছেন যাদের কাছে শুরু করা কঠিন মনে হতে পারে। নিচের রিসোর্সগুলো আপনাকে শুরু করতে সাহায্য করবে:

OCaml-এর ডকুমেন্টেশন একাধিক প্রজেক্টে ছড়িয়ে আছে, আর খুঁজে পাওয়া কঠিন হতে পারে, কারণ একটা জিনিস আছে যাকে অনেক সময় স্ট্যান্ডার্ড লাইব্রেরি বলা হয় (কম্পাইলারের সঙ্গে আসা বরং অতি সামান্য লাইব্রেরিটা), আরেকটা Core লাইব্রেরি (Jane Street-এর আলাদা একটি প্রজেক্ট, যার লক্ষ্য আরও সম্পূর্ণ ও সামঞ্জস্যপূর্ণ একটি স্ট্যান্ডার্ড লাইব্রেরি দেওয়া)।

বিভ্রান্তিকরভাবে, স্ট্যান্ডার্ড লাইব্রেরিকেই মাঝে মাঝে core library বলা হয় (যদিও Core library বলে খুব একটা ডাকা হয় না)।

Jane Street-এর Core লাইব্রেরি কয়েকটি অনুশীলনীর জন্য দরকার, তবে সব অনুশীলনীতেই কাজে লাগতে পারে। এটা তিন ভাগে বিভক্ত: Base, Core_kernel আর Core, যার প্রতিটি আগেরটাকে বাড়িয়ে তোলে। বেশিরভাগ অনুশীলনীর জন্য Base-ই আপনার সব প্রয়োজন মিটিয়ে দেবে, তবে কয়েকটির জন্য (যেমন তারিখ ব্যবহারের ক্ষেত্রে Core_kernel দরকার হয়)। Core ব্যবহার করতে আপনার কোডের শুরুতে open Base বা open Core_kernel লিখুন।

উদাহরণস্বরূপ, List-এর বদলে আপনি Base.(https://ocaml.janestreet.com/ocaml-core/latest/doc/base/Base/List/) থেকে একটা শ্যাডো পান (open Base লিখলে এটা List নামেই পাওয়া যায়)।

স্ট্যান্ডার্ড লাইব্রেরির List মডিউল আর Core-এর List-এর মধ্যে কিছু সূক্ষ্ম আর তেমন সূক্ষ্ম নয় এমন পার্থক্য আছে। যেমন, স্ট্যান্ডার্ড লাইব্রেরিতে List.for_all-এর সিগনেচার হলো

val for_all : ('a -> bool) -> 'a list -> bool

অথচ Core লাইব্রেরিতে এটার সিগনেচার হলো

val for_all : 'a t -> f:('a -> bool) -> bool

এর ফল হলো, কোনো লিস্টের সব সংখ্যা ১০-এর চেয়ে ছোট কি না তা যাচাই করতে কম্পাইলারের core List মডিউল দিয়ে আপনাকে এভাবে লিখতে হবে:

List.for_all (fun x -> x < 10) list

আর Core-এর List মডিউল দিয়ে লিখতে হবে:

List.for_all list (fun x -> x < 10)

অথবা (বাঞ্ছনীয়):

List.for_all ~f:(fun x -> x < 10) list

একটি পরামর্শ: Core লাইব্রেরিতেই মন দিন, আর স্ট্যান্ডার্ড লাইব্রেরিকে এড়িয়ে যান, যদি না Core-এ আপনার দরকারের জিনিসটা সত্যিই খুঁজে না পান।