2010-11-21 14 views
16

के बीच कोड संगतता अच्छा दिन,ओकैम और एफ #

मैं ओकैमल में एक छोटी शौक परियोजना विकसित कर रहा हूं। मैं सोच रहा था कि इसे एफ # में माइग्रेट करना कितना आसान होगा। मुझे पता है कि एफ # में कुछ विशेषताएं हैं जो ओकैमल नहीं करती हैं, लेकिन मैं उम्मीद कर रहा था कि मेरे ओकैमल कोड को बंदरगाह के लिए थोड़ा प्रयास करने की आवश्यकता होगी। मैं जरूरी नहीं है कि मैं माइग्रेट करना चाहता हूं, मैं दोनों प्लेटफॉर्म पर बनाए रखना/विकसित करना चाहता हूं।

अग्रिम धन्यवाद, माइकल

+2

आपको http://stackoverflow.com/questions/179492/f-and-ocaml –

उत्तर

0

मैं किसी भी OCaml एफ करने के लिए # -porting नहीं किया है, लेकिन मैं जानता हूँ कि एफ # मन में OCaml संगतता के साथ बनाया गया है। जैसा कि मुझे पता है, एफ # ज्यादातर मूल ओकैमल का सुपरसैट है।

इसे समर्थन देना चाहिए (और #light तक सीमित होना चाहिए) अधिकांश ओकैमल कीवर्ड और मूल पुस्तकालयों (या नेट फ्रेमवर्क में) में अधिकांश मानक कार्यों के समकक्ष हैं। तो मुझे लगता है कि - कम से कम शौक परियोजनाओं के लिए - पोर्टिंग वास्तव में आसान होना चाहिए।

एफ # में ओकैमल का उन्नत मॉड्यूल सिस्टम नहीं है, इसलिए आपको कार्यान्वित करने में समस्या होगी। functors।

+0

यह देखना चाहिए कि यह कई साल पहले सच था लेकिन मुझे नहीं लगता कि यह अब और सटीक है। एफ # में बहुत सारी मूल सामग्री ओकैमल से अलग हो गई है। उदाहरण के लिए, एक सरणी को अनुक्रमणित करना 'ए। (I) 'ओकैम में है, लेकिन' ए। [I]' F # में एक प्रकार की एनोटेशन के साथ। फ्लोटिंग पॉइंट नंबरों पर ओकैमल के मूल अंकगणितीय ऑपरेटरों ('+ .',' * .' आदि) अब F # में सही तरीके से काम नहीं करते हैं। –

+1

एफ # ज्यादातर ओकैमल का सुपरसेट नहीं है, लेकिन कुछ एक्सटेंशन (सक्रिय पैटर्न इत्यादि) के साथ एक सबसेट है। जॉन के उत्तर में ओकैमल की कुछ विशेषताओं को सूचीबद्ध किया गया है जो F # द्वारा समर्थित नहीं हैं। –

6

आप कल्पना

Features for ML Compatibility

के अंतिम भाग पढ़ सकते हैं और विभिन्न compat पुस्तकालयों के लिए PowerPack से FSharp.PowerPack.Compatibility.dll हड़पने के लिए सुनिश्चित किया जाना चाहिए।

13

लेखन क्रॉस-कंपाइलिंग कोड मुझे दर्द की दुनिया की तरह दिखता है। सुसंगत पीडीएफ के जॉन व्हिटिंगटन एकमात्र व्यक्ति हैं जिन्हें मैं जानता हूं जिन्होंने किसी भी वास्तविक डिग्री के लिए ऐसा करने की कोशिश की है।

मैं एफ # (शायद दुनिया में किसी और की तुलना में अधिक) और मुख्य समस्याओं #light वाक्य रचना, किसी भी गैर तुच्छ OCaml विशेषताएं (वस्तुओं, बहुरूपी वेरिएंट का उपयोग, उच्च क्रम हैं OCaml कोड का एक बहुत का अनुवाद किया है मॉड्यूल, लेबल और वैकल्पिक तर्क और इतने पर), पुस्तकालय (जैसे lablgl, lablgtk, ocamlgraph, आलस्य), मैक्रोज़ (पार्सिंग, स्ट्रीम, पैटर्न मिलान एक्सटेंशन) और सरणी अनुक्रमण जैसे मूल वाक्यविन्यास में परिवर्तन। उदाहरण के लिए, मैंने बस Almabench benchmark को ओकैम से एफ # तक पोर्ट करने की कोशिश की और इसमें कई घंटे लग गए क्योंकि एफ # कंपाइलर में बग की भीड़ के कारण a.[i] को a.(i) पर हाथ से लिखना समाप्त हो गया: इसकी ओकैमल संगतता मोड है काफी नाजुक

तो मैं आपको क्रॉस-संकलन करने की कोशिश करने के बजाय भाषाओं के बीच चयन करने की सलाह दूंगा।

+0

बहुत बहुत धन्यवाद। जो मैं बचाना चाहता था वह एक अतिरिक्त भाषा सीख रहा था। चूंकि मेरे पास .NET (सी #) का कामकाजी ज्ञान है और ओकैमल का मूल ज्ञान है (मेरे func प्रोग्रामिंग कोर्स से) हालांकि मैं एफ # (लगभग) दिया गया था। जाहिर है यह नहीं है। :) – user515232

+1

कोई समस्या नहीं है। आपको शायद ओकैमल और एफ # दोनों को सीखने में बाधा के मुकाबले ज्यादा मदद मिल जाएगी क्योंकि वे एक जैसे हैं लेकिन आप शायद मतभेदों को बहुत ही प्रबुद्ध पाएंगे। –

संबंधित मुद्दे