ट्रैक
/
Lean
Lean
/
अभ्यास
/
ऐरे को उलटिए
ऐरे को उलटिए

ऐरे को उलटिए

आसान

निर्देश

आपको एक कस्टम ऐरे उलटने वाले फंक्शन और बिल्ट-इन List.reverse के बीच समानता सिद्ध करनी है।

इस अभ्यास की प्रकृति ऐसी है कि यहाँ पारंपरिक रनटाइम टेस्टों पर भरोसा नहीं किया जाता। इसके बजाय प्रमाण की जाँच एक प्रमेय check से होती है। अगर यह प्रमेय टाइपचेक हो जाए, तो आप टेस्ट को पास मान सकते हैं।

अगर आप स्थानीय रूप से या Lean के ऑनलाइन प्लेग्राउंड में काम करते हैं, तो Lean InfoView के ज़रिए आपको तुरंत फीडबैक मिलता है कि कोई प्रमेय सफल हुआ या असफल, और असफल होने पर क्यों। यह बहुत काम का टूल है, जो आपके प्रमाण में इस्तेमाल हो रही सारी स्थानीय वैल्यू और आपका वर्तमान लक्ष्य दिखा सकता है।

Caution

sorry टैक्टिक के कारण कोई भी प्रमाण सही दिखने लगता है। इसी कारण से ऐसा लग सकता है कि कोई प्रमाण वास्तव में लिखे जाने से पहले ही check प्रमेय अपने आप टाइपचेक हो गया। जैसे ही आप अपने प्रमाण से sorry हटाते हैं, Lean InfoView सही फीडबैक दिखाता है।

Lean में प्रमेय सिद्ध करना

प्रमेय सिद्ध करना Lean का अभिन्न हिस्सा है। यह प्रोग्रामरों को यह शक्ति देता है कि वे अपने प्रोग्रामों के गुण सिद्ध कर सकें, उनके व्यवहार पर तर्क कर सकें, और टाइप के स्तर पर बाध्यताएँ तथा स्पेसिफिकेशन लिख सकें।

यह अध्याय Lean में प्रमेय सिद्ध करने का अच्छा परिचय देता है। और गहराई में जाने के लिए, Lean की वेबसाइट पर यह किताब एक आधिकारिक संसाधन के रूप में दी गई है।

Lean में कई टैक्टिक उपलब्ध हैं जो सिद्ध करने की प्रक्रिया को, या उसके कुछ हिस्सों को, स्वचालित कर सकती हैं। आप भाषा संदर्भ पर भी एक नज़र डाल सकते हैं।

Advanced

जब कोई प्रमेय दो परिभाषाओं के बीच समानता सिद्ध करता है, तो हम उस पर कंपाइलर एट्रिब्यूट csimp इस्तेमाल कर सकते हैं। यह एट्रिब्यूट कंपाइलर को निर्देश देता है कि वह पहली परिभाषा की जगह दूसरी परिभाषा इस्तेमाल करे:

@[csimp]
theorem custom_reverse_eq_spec_reverse : @Extra.custom_reverse = @List.reverse := by
    ... -- proof here

-- now any occurrence of `Extra.custom_reverse` may now compile to `List.reverse`.

यह खास तौर पर ऐसी स्थितियों में बहुत काम आता है जहाँ कोई इम्प्लीमेंटेशन ज़्यादा कुशल है लेकिन कम स्पष्ट। हम एक सरल स्पेसिफिकेशन लिख सकते हैं और कंपाइल हो चुके कोड से पहली जगह ज़्यादा कुशल इम्प्लीमेंटेशन इस्तेमाल करवा सकते हैं। List और Array के कई फंक्शन इसी पैटर्न का उपयोग करते हैं।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Lean Exercism

ऐरे को उलटिए शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Lean को 100 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।