OCaml में बिल्कुल शुरू से शुरुआत करने का अवलोकन
Exercism अभ्यास और फीडबैक देता है, लेकिन जो लोग पहली बार OCaml सीख रहे हैं, उनके लिए शुरुआत करना मुश्किल हो सकता है। ये संसाधन आपको शुरू करने में मदद कर सकते हैं:
OCaml का दस्तावेज़ कई प्रोजेक्टों में बिखरा हुआ है, इसलिए उसे ढूँढना मुश्किल हो सकता है। इसकी वजह यह है कि OCaml में एक तरफ वह है जिसे कभी-कभी स्टैंडर्ड लाइब्रेरी कहा जाता है (कंपाइलर के साथ आने वाली बेहद सीमित लाइब्रेरी), और दूसरी तरफ Core लाइब्रेरी (Jane Street का अलग प्रोजेक्ट, जिसका उद्देश्य एक ज़्यादा पूरी और एकरूप स्टैंडर्ड लाइब्रेरी देना है)।
उलझन की बात है कि स्टैंडर्ड लाइब्रेरी को कभी-कभी core library भी कहा जाता है (हालाँकि Core लाइब्रेरी कम ही कहा जाता है)।
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
इसका नतीजा यह है कि यह जाँचने के लिए कि किसी ऐरे की सारी संख्याएँ 10 से छोटी हैं या नहीं, कंपाइलर की 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 में आपको जो चाहिए वह सचमुच न मिले।