मैं आज जेसन हिकी की ऑनलाइन पुस्तक "ऑब्जेक्टिव कैमल का परिचय" पढ़ रहा था और फ़ंक्चरर्स (पृष्ठ 140) के अध्याय में मैं सेट फ़ैक्टर के अंदर निम्न पंक्ति में भाग गया था परिभाषा:ओकैमल में, सूची कन्स्ट्रक्टर :: ऑपरेटर नहीं है
let add = (::)
कोड चलाने से परिणामस्वरूप बहुत ही रोशनी 'सिंटेक्स त्रुटि' त्रुटि संदेश नहीं हुआ। ओकंपल टोपवेल में लाइन में प्लगइन के बाद मुझे पता चला कि ::
वास्तव में एक ऑपरेटर नहीं बल्कि एक प्रकार का कन्स्ट्रक्टर है।
हालांकि, मुझे पता है कि हास्केल के बराबर :
कन्स्ट्रक्टर को ऑपरेटर (फ़ंक्शन) के रूप में भी माना जा सकता है।
Prelude> :t (:)
(:) :: a -> [a] -> [a]
मेरा प्रश्न है: OCaml कंस्ट्रक्टर्स कभी नहीं प्रथम श्रेणी मूल्यों (जिसका अर्थ है किताब से कोड शुरू से ही गलत था) और कर दिया गया है क्यों यह मामला है?
मैं सामान्य रूप से इस मुद्दे को दूर करने के लिए '(मजेदार x y -> x :: y) 'का उपयोग करता हूं (ऑपरेटर को लैम्ब्डा में परिवर्तित करता है)। यह थोड़ा परेशान है लेकिन काम करता है। साथ ही, यदि '::' कोई फ़ंक्शन था, तब भी आपको वही करना होगा जब भी आपको '::' स्वैप के लिए तर्क की आवश्यकता हो, तो मुझे लगता है कि यह उस सम्मान में कुछ समझ में आता है। –