"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में कार्यात्मक प्रोग्रामिंग का परिचय: मोनाड और फ़ैक्टर्स #7

जावास्क्रिप्ट में कार्यात्मक प्रोग्रामिंग का परिचय: मोनाड और फ़ैक्टर्स #7

2024-07-29 को प्रकाशित
ब्राउज़ करें:544

Introduction to Functional Programming in JavaScript: Monad and functors #7

मोनैड्स और फ़ैक्टर्स कार्यात्मक प्रोग्रामिंग में उन्नत अवधारणाएं हैं जो डेटा परिवर्तनों, साइड इफेक्ट्स और संरचना को संभालने के लिए शक्तिशाली सार प्रदान करते हैं। जबकि वे गणित में श्रेणी सिद्धांत से उत्पन्न हुए हैं, उनके पास जावास्क्रिप्ट जैसी प्रोग्रामिंग भाषाओं में व्यावहारिक अनुप्रयोग हैं।

फ़ंक्टर क्या है?

फ़ंक्टर एक डेटा प्रकार है जो एक मैप विधि को कार्यान्वित करता है, जो फ़ंक्टर के अंदर मान पर एक फ़ंक्शन लागू करता है और रूपांतरित मान के साथ एक नया फ़ंक्टर लौटाता है। संक्षेप में, फ़ैनक्टर आपको कंटेनर की संरचना को बदले बिना किसी फ़ंक्शन को लपेटे गए मान पर लागू करने की अनुमति देते हैं।

फ़ंक्टर का उदाहरण
class Box {
  constructor(value) {
    this.value = value;
  }

  map(fn) {
    return new Box(fn(this.value));
  }
}

// Usage
const box = new Box(2);
const result = box.map(x => x   3).map(x => x * 2);
console.log(result); // Box { value: 10 }

इस उदाहरण में, बॉक्स एक फ़नकार है। मैप विधि फ़ंक्शन fn को बॉक्स के अंदर के मान पर लागू करती है और रूपांतरित मान के साथ एक नया बॉक्स लौटाती है।

मोनाड क्या है?

एक मोनैड एक प्रकार का फ़ैक्टर है जो दो अतिरिक्त तरीकों को लागू करता है: (या कुछ भाषाओं में रिटर्न) और फ़्लैटमैप (जिसे बाइंड या चेन के रूप में भी जाना जाता है)। मोनाड, मोनाड के संदर्भ को बनाए रखते हुए निहित मूल्य पर श्रृंखला संचालन का एक तरीका प्रदान करते हैं।

भिक्षुओं के गुण
  1. इकाई (का): एक विधि जो एक मान लेती है और उस मान वाला एक मोनड लौटाती है।
  2. बाइंड (फ्लैटमैप): एक विधि जो एक मोनड को लौटाने वाला फ़ंक्शन लेती है और इसे निहित मान पर लागू करती है, परिणाम को समतल करती है।
मोनाड का उदाहरण
class Box {
  constructor(value) {
    this.value = value;
  }

  static of(value) {
    return new Box(value);
  }

  map(fn) {
    return Box.of(fn(this.value));
  }

  flatMap(fn) {
    return fn(this.value);
  }
}

// Usage
const box = Box.of(2);
const result = box
  .flatMap(x => Box.of(x   3))
  .flatMap(x => Box.of(x * 2));
console.log(result); // Box { value: 10 }

इस उदाहरण में, बॉक्स एक फ़ैक्टर और एक मोनड दोनों है। of विधि एक मान को एक बॉक्स में लपेटती है, और फ़्लैटमैप विधि एक फ़ंक्शन को निहित मान पर लागू करती है और परिणामी मोनड लौटाती है।

भिक्षुओं और फ़ंक्टरों के व्यावहारिक उपयोग के मामले

मोनैड्स और फ़ंक्टर केवल सैद्धांतिक निर्माण नहीं हैं; उनके पास वास्तविक दुनिया की प्रोग्रामिंग में व्यावहारिक अनुप्रयोग हैं। आइए कुछ सामान्य उपयोग के मामलों का पता लगाएं।

शायद मोनाड के साथ वैकल्पिक मानों को संभालना

शायद मोनैड का उपयोग वैकल्पिक मूल्यों को संभालने, शून्य या अपरिभाषित मूल्यों से बचने और श्रृंखला संचालन के लिए एक सुरक्षित तरीका प्रदान करने के लिए किया जाता है।

class Maybe {
  constructor(value) {
    this.value = value;
  }

  static of(value) {
    return new Maybe(value);
  }

  isNothing() {
    return this.value === null || this.value === undefined;
  }

  map(fn) {
    return this.isNothing() ? this : Maybe.of(fn(this.value));
  }

  flatMap(fn) {
    return this.isNothing() ? this : fn(this.value);
  }
}

// Usage
const maybeValue = Maybe.of('hello')
  .map(str => str.toUpperCase())
  .flatMap(str => Maybe.of(`${str} WORLD`));
console.log(maybeValue); // Maybe { value: 'HELLO WORLD' }

इस उदाहरण में, हो सकता है कि मोनैड वैकल्पिक मान को सुरक्षित रूप से संभालता है, केवल परिवर्तनों की अनुमति देता है यदि मान शून्य या अपरिभाषित नहीं है।

प्रॉमिस मोनाड के साथ एसिंक्रोनस ऑपरेशंस को संभालना

जावास्क्रिप्ट में वादे ऐसे सन्देश हैं जो अतुल्यकालिक संचालन को संभालते हैं, श्रृंखला संचालन का एक तरीका प्रदान करते हैं और त्रुटियों को संभालते हैं।

const fetchData = url => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(`Data from ${url}`);
    }, 1000);
  });
};

// Usage
fetchData('https://api.example.com')
  .then(data => {
    console.log(data); // 'Data from https://api.example.com'
    return fetchData('https://api.example.com/2');
  })
  .then(data => {
    console.log(data); // 'Data from https://api.example.com/2'
  })
  .catch(error => {
    console.error(error);
  });

वादे आपको एसिंक्रोनस ऑपरेशंस को साफ और सुव्यवस्थित तरीके से संभालने, ऑपरेशंस को चेन करने और त्रुटियों को खूबसूरती से संभालने की अनुमति देते हैं।

मोनैड्स और फ़ैक्टर्स कार्यात्मक प्रोग्रामिंग में शक्तिशाली अमूर्तताएं हैं जो आपको डेटा परिवर्तनों, साइड इफेक्ट्स और संरचना के साथ अधिक संरचित और पूर्वानुमानित तरीके से काम करने में सक्षम बनाती हैं।

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

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/francescoagati/introduction-to-functional-programming-in-javascript-monad-and-functors-7-1l6l?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3