OCaml में गोल्फ के लिए टिप्स


10

अन्य 'भाषा xyz में गोल्फ के लिए युक्तियाँ' के वर्गीकरण से प्रेरित। हमेशा की तरह, कृपया केवल उन सुझावों का सुझाव दें, जो OCaml के लिए विशिष्ट हैं और सामान्य रूप से प्रोग्रामिंग नहीं। कृपया प्रति उत्तर एक टिप।


1
अगर मैं कुछ स्पष्ट सुझाव जोड़ूं तो मन?
एडवर्ड

जवाबों:


4

मैच के बजाय फंक्शन्स का इस्तेमाल करें

let rec f=function[]->0|_::t->1+f t

से छोटा है

let rec f x=match x with[]->0|_::t->1+f t

3

कभी भी शुरुआत […] अंत का उपयोग न करें

इस:

begin […] end 

हमेशा इस का पर्याय है:

([…])

2

एक साथ कई चर या कार्यों को परिभाषित करें

ट्यूपल्स के लिए धन्यवाद, आप एक साथ कई चर को परिभाषित कर सकते हैं। और फ़ंक्शंस प्रथम श्रेणी के नागरिक हैं:

let f,g=(fun x->x+1),fun x->2*x

हालाँकि, आप नहीं लिख सकते हैं:

let f,g=(fun x->x+1),fun x->2*f x

त्रुटि: अनबाउंड मान f

दुर्भाग्यवश, आप इस समस्या से बच नहीं सकते हैं rec:

let rec f,g=(fun x->x+1),fun x->2*f x

त्रुटि: बाईं ओर के रूप में केवल चर की अनुमति है let rec


2

शोषण curryied कार्यों

OCaml में फ़ंक्शंस करी जाती हैं। यह कभी-कभी उस तथ्य का फायदा उठाने के लिए उपयोगी हो सकता है।

let n y=f x y

लिखा जा सकता है

let n=f x

यदि आपको अंकगणित संचालन की आवश्यकता है, तो आप उन्हें कोष्ठक के साथ घेर सकते हैं ताकि वे मानक, उपसर्ग कार्यों की तरह व्यवहार करें। (+), (-)

let n=(+)1;;
n 3;;

- : int = 4

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.