एफ # के printf
में प्रारूप विनिर्देशक %A
है जो किसी भी F # प्रकार में पास करने में सक्षम बनाता है, और इसका मूल्यांकन और मुद्रित किया जाएगा।एफ # के प्रिंटफ में% ए विनिर्देशक ओकैमल के प्रिंटफ़ में मौजूद नहीं है?
एक उदाहरण के रूप:
type Result<'a> =
| Failure
| Success of 'a
printf "%A" (Success "hello") // prints out 'Success "hello"'
कहाँ, स्पष्ट रूप से, Result<'a>
नहीं है निर्मित एक प्रकार।
मैं OCaml में एक समान प्रकार घोषणा कर सकते हैं, लेकिन वहाँ Printf.printf
के लिए कोई समकक्ष विनिर्देशक है - इसके बजाय, मैं अपने खुद के string_of_result
समारोह को लागू करने के लिए होता है, और प्रारूप स्ट्रिंग में %s
विनिर्देशक का उपयोग करें। इसके अलावा, चूंकि यह एक पॉलीमोर्फिक प्रकार है, इसलिए मुझे एक सीधा-सरल फ़ंक्शन बनाना होगा जो 'a
के किसी भी प्रकार के उदाहरण को संभाल सकता है।
मेरा सवाल है - ओकैमल में इस आसान विनिर्देशक की कमी क्यों है? क्या ऐसा इसलिए है क्योंकि इसे लागू करने के लिए कोई प्रोत्साहन नहीं है? क्या ऐसा इसलिए है क्योंकि अंडर-द-हूड मोोजो की कमी है, जो कि एफ # में है?
बस एक अतिरिक्त के रूप में: इस समाधान को पीपीएक्स द्वारा प्रोसेसिंग की आवश्यकता है - जब मैं सिर्फ आरपीएल को कोड कॉपी और पेस्ट करता हूं, तो '' pp_result''' अभी भी अपरिभाषित है। –
@ lambda.xy.x - मैंने इसे भी देखा। किसी कारण से मेरे पास पहले से 'opx' के माध्यम से' ppx_deriving' स्थापित किया गया था, लेकिन अब एक त्रुटि फेंक दी गई है: 'डेरिवर्स शो का पता नहीं लगाया जा सकता है'। – asafc
हाँ, मैं वास्तव में 'printf' विनिर्देशकों के बारे में एक प्रतिक्रिया जटिल नहीं करना चाहता था जो 'ppx_deriving' को कॉन्फ़िगर/कॉन्फ़िगर करने के विवरण के साथ है। (संदर्भ के लिए: अपूर्ण में, '#use "topfind" 'और फिर' #ququire" ppx_deriving.show "'। लेकिन विवरण के लिए 'ppx_deriving' दस्तावेज़ देखें।) – gsg