सुरक्षा की झूठी भावना । यह बकवास है।
कुछ बुनियादी प्रकार । OCaml में अब बाइट्स और बाइट सरणियाँ हैं, लेकिन कोई बिल्ट-इन यूनिकोड स्ट्रिंग्स, 16-बिट पूर्णांक, अहस्ताक्षरित पूर्णांक, 32-बिट फ़्लोट्स, वैक्टर या मैट्रीस नहीं हैं। तृतीय-पक्ष पुस्तकालय इनमें से कुछ प्रदान करते हैं।
साइलेंट इंटेगर ओवरफ्लो । अपरिवर्तित लेकिन यह कभी कोई समस्या नहीं थी।
मॉड्यूल अपरिवर्तनीयता । उनकी सिफारिश है कि फ़ंक्शंस और मॉड्यूल को एक-दूसरे के साथ जोड़ा जाना चाहिए और लिस्प और वास्तव में एक बुरा विचार है। include
यदि आप चाहते हैं तो आप मॉड्यूल का उपयोग कर सकते हैं, लेकिन आप उन्हें म्यूट नहीं कर सकते, निश्चित रूप से।
बहुरूपता रन-टाइम प्रकार त्रुटियों का कारण बनता है । यह OCaml के साथ एक बड़ी समस्या है और इसे ठीक नहीं किया गया है। जब आपके प्रकार बहुरूपता की समानता को विकसित करते हैं, तो तुलना और हैशिंग तब विफल होने लगेंगे जब वे फ़ंक्शन जैसे प्रकारों का सामना करते हैं और समस्या को डीबग करना बहुत कठिन है। एफ # के पास इस समस्या का एक शानदार समाधान है।
कोई मैक्रों नहीं । विडंबना यह है कि जब उन्होंने लिखा था कि यह ओकेमेल वास्तव में मैक्रोज़ के लिए पूर्ण समर्थन था, लेकिन उन्होंने अब इस सुविधा को बाहर खींचने का फैसला किया है।
लपेटने वाला । यह एक वास्तविक समस्या थी और इसे ठीक नहीं किया गया है। अभी भी try ... finally
OCaml भाषा में कोई निर्माण नहीं है और कोई रैपर इसे stdlib में लागू नहीं करता है।
स्थान । अपरिवर्तित लेकिन एक गैर-समस्या।
रिकॉर्ड फ़ील्ड नामकरण नरक । मॉड्यूल का उपयोग करके अपने कोड को ठीक से संरचना करें।
सिंटेक्स । अपरिवर्तित लेकिन एक गैर-समस्या।
कोई बहुरूपता नहीं । यह ज्यादातर बकवास था जब उन्होंने इसे लिखा था और कुछ भी नहीं बदला है।
असंगत फ़ंक्शन सेट करता है । OCaml में अभी भी एक cons
फंक्शन नहीं है । कोई बात नहीं। मैं अपनी भाषा में लिस्प सामान नहीं चाहता, धन्यवाद।
कोई गतिशील चर नहीं । OCaml के बारे में एक अच्छी बात थी। अभी भी OCaml के बारे में अच्छी बात है।
वैकल्पिक ~ तर्क चूसना । वैकल्पिक तर्क रॉक। मैंने Microsoft को F # के लिए वैकल्पिक तर्क जोड़ने के लिए खराब किया।
आंशिक तर्क आवेदन असंगति । एह?
अंकगणित की पठनीयता । यह बदल गया है क्योंकि मैंने 8 साल पहले OCaml का उपयोग बंद कर दिया था। जाहिर है अब आप कर सकते हैं Int64.((q * n - s * s) / (n - 1L))
।
मूक नाम संघर्ष संकल्प । वह REPL में पूर्ण विकसित सॉफ्टवेयर विकास करने की कोशिश कर रहा था जैसा कि आप लिस्प में करेंगे। OCaml में ऐसा मत करो। केवल परीक्षण, डिस्पोजेबल कोड और इंटरैक्टिव तकनीकी कंप्यूटिंग चलाने के लिए REPL के लिए फ़ाइलों और बैच संकलन का उपयोग करें।
मूल्यांकन का आदेश । यह गलत था जब उन्होंने इसे लिखा था। OCaml में मूल्यांकन का क्रम अपरिभाषित है।
कोई वस्तु इनपुट / आउटपुट नहीं । उन्होंने एक तीसरे पक्ष के पुस्तकालय का हवाला दिया जिसने पहले ही इस "समस्या" को हल कर दिया था।
पहली त्रुटि के बाद कंपाइलर बंद हो जाता है । एह?
मूल रूप से संकलित निष्पादनयोग्य के लिए कोई स्टैक ट्रेस नहीं । फिक्स्ड।
डिबगर बेकार है । मैंने डिबगर का उपयोग कभी नहीं किया। स्टेटिक टाइप चेकिंग मेरे लगभग सभी बग्स को पकड़ लेती है।
जीसी चूसता है । मैंने पाया कि OCaml की GC एक बड़ी समस्या को छोड़कर शानदार है: वैश्विक लॉक समानांतर प्रोग्रामिंग को रोकता है।
कोई अंतर्निहित आगे की घोषणाएं नहीं । सभी विधायकों में डिजाइन द्वारा पारस्परिक पुनरावृत्ति स्पष्ट है। एकमात्र शर्त यह है कि type
परिभाषाएँ डिफ़ॉल्ट रूप let
से पुनरावर्ती हैं, जबकि बाइंडिंग डिफ़ॉल्ट रूप से गैर-पुनरावर्ती हैं।
फंक्शन राउंड अनुपस्थित है । OCaml में अभी भी एक नंगे हड्डियाँ stdlib है लेकिन जेन सेंट के कोर जैसे तीसरे पक्ष के पुस्तकालय प्रदान करते हैं round
और मित्र हैं।
सूचियाँ । List.map
अभी भी पुनरावर्ती पूंछ नहीं है। मैंने पैच को इस तरह गंभीर कीड़े को ठीक करने के लिए प्रस्तुत किया और उन्हें रिलीज होने से पहले वर्षों इंतजार करना पड़ा। सूचियाँ अभी भी अपरिवर्तनीय हैं। और इसलिए उन्हें होना चाहिए
गति । मेरा मानना है कि बड़े पॉलीमॉर्फिक वेरिएंट के लिए संकलन समय निर्धारित किया गया है।
पैटर्न मिलान । वास्तविकता पर आशा की विजय। लिस्प समुदाय ऐसा करने में विफल रहा है। इसलिए मेरा 10 वां नियम: किसी भी पर्याप्त रूप से जटिल लिस्प कार्यक्रम में ओकेएमएल के पैटर्न मैच कंपाइलर का आधा हिस्सा अनौपचारिक रूप से निर्दिष्ट और बग-राइड कार्यान्वयन है।
लेकिन आप लाइब्रेरी के कॉल के रूप में शीर्ष-स्तर से सुंदर प्रिंटर को आमंत्रित कर सकते हैं, जिससे इसे आवश्यक प्रकार की जानकारी मिलती है। और एक मैक्रो था जिसका उपयोग आप डेटा संरचनाओं को एनोटेट करने के लिए कर सकते हैं ताकि सुंदर प्रिंटर ऑटोजेनरेटेड हो।