में उच्च समझ कार्यों के विरुद्ध सूची समझ एसएमएल पृष्ठभूमि से आती है और उच्च-आदेश कार्यों के साथ काफी सहज महसूस करती है। लेकिन मुझे वास्तव में सूची समझ का विचार नहीं मिलता है। क्या ऐसी कोई स्थिति है जहां सूची समझ List
पर उच्च-आदेश कार्यों की तुलना में अधिक उपयुक्त है और इसके विपरीत?एफ #
मैंने कहीं सुना है कि सूची समझ उच्च-आदेश कार्यों की तुलना में धीमी है, क्या मुझे प्रदर्शन-महत्वपूर्ण कार्यों को लिखते समय इसका उपयोग करने से बचना चाहिए?
उदाहरण के लिए 'खातिर, Projecting a list of lists efficiently in F# पर एक नज़र डालें जहां @ cfern का जवाब दो संस्करणों क्रमशः सूची समझ और उच्च आदेश कार्यों का उपयोग कर शामिल हैं:
let rec cartesian = function
| [] -> [[]]
| L::Ls -> [for C in cartesian Ls do yield! [for x in L do yield x::C]]
और:
let rec cartesian2 = function
| [] -> [[]]
| L::Ls -> cartesian2 Ls |> List.collect (fun C -> L |> List.map (fun x->x::C))