मैं फ्लो एपीआई से परिचित नहीं हूं।
शब्द "उठाने" श्रेणी के सिद्धांत से आता है। हस्केल या स्काला जैसी प्रोग्रामिंग भाषाओं में, एक lift
फ़ंक्शन एक फ़ंक्शन लेता है A => B
, और किसी तरह जादू करता है ताकि उठा हुआ फ़ंक्शन F[A] => F[B]
किसी फ़नकार या मोनाड पर लागू किया जा सके F[A]
।
स्काला के Seq
कंटेनर का उपयोग करके एक ठोस उदाहरण : मान लें कि हमारे पास एक फ़ंक्शन def double(x: Int): Int = 2 * x
और एक अनुक्रम है val xs = Seq(1, 2, 3)
। हम double(xs)
असंगत प्रकारों के कारण नहीं हो सकते । लेकिन अगर हम एक प्राप्त करते हैं val doubleSeq = liftToSeq(double)
, तो हम कर सकते हैं doubleSeq(xs)
, जो मूल्यांकन करता है Seq(2, 4, 6)
। यहाँ, के liftToSeq
रूप में लागू किया जा सकता है
def liftToSeq[A, B](f: A => B): (Seq[A] => Seq[B]) =
(seq: Seq[A]) => seq.map(f)
Seq(…)
निर्माता भी एक उठाने ऑपरेशन है, जो मूल्यों लिफ्टों के रूप में देखा जा सकता है 1, 2, 3
एक में Seq
उदाहरण है, इस प्रकार हमें इन मूल्यों के लिए सूची कपोल-कल्पना का उपयोग करने की इजाजत दी।
मोनाड्स हमें वाटरटाइट लेकिन कंपोज़ेबल इंटरफ़ेस की पेशकश करके किसी प्रकार के आंतरिक कामकाज को एनकैप्सुलेट करने की अनुमति देते हैं। एक उठा प्रतिनिधित्व का उपयोग करना एक संगणना के बारे में तर्क करना आसान बना सकता है। इस तरह के अमूर्त का उपयोग करने का मतलब यह भी है कि हम अमूर्त-दूर की बारीकियों का ज्ञान खो देते हैं, लेकिन उन्हें हुड के तहत एक कुशल कार्यान्वयन प्रदान करने के लिए आवश्यक है (एक उपयुक्त निष्पादन प्रतिनिधित्व खोजना)।