Gleam में Nil एक टाइप है जिसकी एक ही वैल्यू होती है, जिसे भी Nil कहा जाता है। यह दूसरी भाषाओं के void जैसा है: यह तब इस्तेमाल होता है जब किसी फंक्शन के पास लौटाने के लिए और कोई उपयुक्त वैल्यू न हो।
io.println("Hello, Joe!")
// -> Nil
Gleam में वैल्यू, कुछ दूसरी भाषाओं की तरह, "nil-able" या "nullable" नहीं होतीं। कोई वैल्यू तभी Nil हो सकती है जब उसका टाइप Nil हो। किसी दूसरे टाइप की वैल्यू कभी Nil नहीं हो सकती।
Gleam में, ज़्यादातर प्रोग्रामिंग भाषाओं की तरह, "साइड इफेक्ट" होते हैं। इसका मतलब है कि फंक्शन वैल्यू लौटाने के साथ-साथ दुनिया की स्थिति पढ़ भी सकते हैं और उसे बदल भी सकते हैं।
Gleam की स्टैंडर्ड लाइब्रेरी में मौजूद gleam/io मॉड्यूल कंसोल पर स्ट्रिंग छापने के फंक्शन देता है।
io.println("Hello, Joe!")
// Hello, Joe!
// -> Nil
दूसरे पैकेज भी IO के और फंक्शन दे सकते हैं, जैसे simplifile, जो फाइलें पढ़ने और लिखने के फंक्शन देता है।
simplifile.read("favourite-colour.txt")
// -> Ok("Pink\n")
Boris मॉडल ट्रेनों के बड़े शौकीन हैं और उन्होंने अपनी इस दिलचस्पी को दुनिया के साथ बाँटने का फैसला किया है: वे एक न्यूज़लेटर शुरू करेंगे। वे न्यूज़लेटर का पहला अंक उन दोस्तों और परिचितों को भेजेंगे जो इस शौक को साझा करते हैं। उनके ईमेल पते एक टेक्स्ट फाइल में रखे हुए हैं।
संकेत: फाइल से जुड़े कामों के लिए simplifile मॉड्यूल इस्तेमाल कीजिए।
read_emails फंक्शन बनाइए। यह ऐसी टेक्स्ट फाइल का पाथ लेता है जिसमें हर ईमेल पता नई लाइन पर लिखा होता है, और फाइल में मौजूद सारे ईमेल पतों का एक ऐरे लौटाता है।
read_emails("/home/my_user/documents/model_train_friends_emails.txt")
// -> Ok(["rick@example.com", "choochoo42@example.com", "anna@example.com"])
ईमेल भेजना एक ऐसा काम है जो कई अप्रत्याशित कारणों से असफल हो सकता है, जैसे ईमेल पता लिखने में हुई कोई गलती या नेटवर्क की अस्थायी समस्या। यह सुनिश्चित करने के लिए कि आप सभी दोस्तों को बिना एक ही ईमेल दोबारा भेजे, फिर से भेजने की कोशिश कर सकें, आपको उन ईमेल पतों को लॉग करना होगा जिन्हें ईमेल पहले ही भेजा जा चुका है। इसके लिए आपको एक लॉग फाइल चाहिए होगी।
create_log_file फंक्शन बनाइए। यह एक फाइल पाथ लेता है और उस जगह पर एक नई खाली फाइल बनाता है।
create_log_file("/home/my_user/documents/newsletter_issue1_log.txt")
// -> Ok(Nil)
log_sent_email फंक्शन बनाइए। यह लॉग फाइल का पाथ और ईमेल पता वाली एक स्ट्रिंग लेता है। यह ईमेल पता फाइल में लिखता है और उसके बाद एक नई लाइन जोड़ता है।
log_sent_email(
"/home/my_user/documents/newsletter_issue1_log.txt",
"joe@example.com",
)
// -> Ok(Nil)
अब जब आपके पास ईमेल भेजने की पूरी प्रक्रिया के सारे हिस्से तैयार हैं, तो आपको इन सबको एक ही फंक्शन में जोड़ना है।
send_newsletter फंक्शन बनाइए। यह ईमेल पतों वाली फाइल का पाथ, एक लॉग फाइल का पाथ, और एक अनाम फंक्शन लेता है जो किसी दिए गए ईमेल पते पर ईमेल भेजता है।
इसे दी गई फाइल से सारे ईमेल पते पढ़ने चाहिए और हर पते पर ईमेल भेजने की कोशिश करनी चाहिए। अगर ईमेल भेजने वाला अनाम फंक्शन कोई Ok वैल्यू लौटाता है, तो उस ईमेल पते को लॉग फाइल में लिखिए। ध्यान रखिए कि ईमेल भेजे जाते ही यह काम हो जाना चाहिए।
send_newsletter(
"model_train_friends_emails.txt",
"newsletter_issue1_log.txt",
send_email,
)
// -> Ok(Nil)
Exercism पर साइन अप कीजिए और Gleam को 33 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।