जब मैंने पहली बार OCaml में function कीवर्ड के उपयोग को देखा, तो मुझे यह आभास हुआ कि यह पैटर्न मिलान के लिए match x with लाइन को खत्म करने के लिए सिंटैक्स शुगर था।

हालाँकि, मैं देख रहा हूँ कि नीचे दिए गए उदाहरण में दोनों के बीच एक हस्ताक्षर अंतर है। आप किन परिस्थितियों में function उदाहरण का उपयोग करना चाहेंगे?

type e = Foo | Bar

let eval1 exp =
match exp with
| Foo -> "Foo"
| Bar -> "Bar"

let eval2 exp = function
| Foo -> "Foo"
| Bar -> "Bar"

पहले फ़ंक्शन में val eval1 : e -> bytes = <fun> के हस्ताक्षर हैं

दूसरे फ़ंक्शन में val eval2 : 'a -> e -> bytes = <fun> के हस्ताक्षर हैं

0
timbo 8 अक्टूबर 2018, 01:22

1 उत्तर

सबसे बढ़िया उत्तर

eval2 में, function का उपयोग करते हुए, जिस तर्क से मिलान किया जाता है वह निहित है। exp यहां अप्रयुक्त है, और आपको एक कंपाइलर चेतावनी देनी चाहिए (जब तक कि आपने इसे बंद नहीं किया है)। यदि आप exp तर्क को हटाते हैं तो हस्ताक्षर समान होने चाहिए।

या दूसरे शब्दों में, function ... सिर्फ match exp with ... के लिए सिंटैक्स चीनी नहीं है, बल्कि fun exp -> match exp with ... के लिए है

7
glennsl 7 अक्टूबर 2018, 22:25