खोज…


List.Map

List.map हस्ताक्षर हैं ('a -> 'b) -> 'a list -> 'b list जो अंग्रेजी में एक समारोह है कि एक समारोह लेता है अर्थात् एक प्रकार से (हम इस मानचित्रण समारोह फोन करता हूँ) ( 'a ) दूसरे प्रकार (अर्थात् 'b ) और पहले प्रकार की सूची के लिए। फ़ंक्शन दूसरे प्रकार की एक सूची देता है जहां हर तत्व पहली सूची के एक तत्व पर मैपिंग फ़ंक्शन को कॉल करने का परिणाम है।

List.map string_of_int [ 1; 2; 3; 4 ]
#- [ "1"; "2"; "3"; "4" ] : string list

'b और 'b 'a प्रकार अलग-अलग नहीं हैं। उदाहरण के लिए, हम उनके वर्गों में आसानी से नंबर मैप कर सकते हैं।

let square x = x * x in
List.map square [ 1; 2; 3; 4 ]
#- [ 1; 4; 9; 16 ] : int list

किसी सूची में डेटा एकत्र करना

List.fold_left और List.fold_right फ़ंक्शंस उच्च-ऑर्डर फ़ंक्शंस हैं जो सूची एकत्रीकरण के बाहरी तर्क को लागू करते हैं। किसी सूची को एकत्र करना, कभी-कभी एक सूची को कम करने के रूप में भी संदर्भित किया जाता है, जिसका अर्थ है कि उस सूची में सभी वस्तुओं के अनुक्रमिक निरीक्षण से प्राप्त मूल्य की गणना करना।

सूची मॉड्यूल के प्रलेखन में कहा गया है कि

  • List.fold_left fa [b1; ...; bn] f (... (f (fa b1) b2) ...) bn
  • List.fold_right f [a1; ...; an] b f a1 (f a2 (... (f an b) ...)) । (यह बाद का कार्य पूंछ-पुनरावर्ती नहीं है।)

सादे अंग्रेजी कंप्यूटिंग सूची में। List.fold_left fa [b1; ...; bn] सूची के माध्यम से चलने की मात्रा [b1; ...; bn] एक संचायक शुरू में करने के लिए सेट पर नज़र रखने के a : हर बार जब हम सूची में किसी आइटम को देखने के लिए, हम का उपयोग करें f संचायक का मान अपडेट, और जब हम किया जाता है, संचायक हमारे गणना के अंतिम मूल्य है। List.fold_right फ़ंक्शन समान है।

यहाँ कुछ व्यावहारिक उदाहरण दिए गए हैं:

संख्याओं की सूची के कुल योग की गणना करें

List.fold_left ( + ) 0 lst

फ्लोट की सूची के औसत की गणना करें

let average lst =
  let (sum, n) =
    List.fold_left (fun (sum, n) x -> (sum +. x, n + 1)) (0.0, 0) lst
  in
  sum /. (float_of_int n)

बुनियादी सूची प्रसंस्करण को फिर से लागू करें

कार्य List.fold_leftList.fold_left और List.fold_right इतनी सामान्य हैं कि उनका उपयोग सूची मॉड्यूल से लगभग हर दूसरे कार्य को कार्यान्वित करने के लिए किया जा सकता है:

let list_length lst = (* Alternative implementation to List.length *)
  List.fold_left ( + ) 0 lst

let list_filter predicate lst = (* Alternative implementation to List.filter *)
  List.fold_right (fun a b -> if predicate a then a :: b else b) lst []

List.iter फ़ंक्शन को List.iter करना और भी संभव है, याद रखें कि () इस कोड को सूची एकत्रीकरण के एक और उदाहरण के रूप में व्याख्या करने के लिए प्रोग्राम की वैश्विक स्थिति है:

let list_iter f lst = (* Alternation implementation to List.iter *)
  List.fold_left (fun () b -> f b) () lst

इन उदाहरणों को सीखने की सामग्री माना जाता है, इन कार्यान्वयनों में मानक पुस्तकालय से संबंधित कार्यों पर कोई पुण्य नहीं है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow