haskell - मुझे टैब और स्थान क्यों नहीं मिलाने चाहिए?



syntax whitespace (1)

समस्या दुगुनी है। सबसे पहले, हास्केल इंडेंटेशन संवेदनशील है, उदाहरण के लिए निम्न कोड मान्य नहीं है:

example = (a, b)
  where
    a = "Hello"
     b = "World"

दोनों बाइंडिंग को समान स्थान / टैब ( ऑफ-साइड नियम देखें ) के साथ इंडेंट करने की आवश्यकता है। हालांकि इस मामले में यह स्पष्ट है, लेकिन यह निम्नलिखित में छिपा हुआ है, जहां मैं · द्वारा एक स्थान और » द्वारा एक टैब निरूपित करता हूं:

example = (a, b)
··where
····a = "Hello"
»   b = "World"

यह मान्य हास्केल कोड की तरह दिखेगा यदि संपादक टैब को चार से गुणक में संरेखित करेगा। लेकिन ऐसा नहीं है। हास्केल टैब आठ के गुणकों द्वारा संरेखित किए जाते हैं, इसलिए कोड की व्याख्या इस प्रकार की जाएगी:

example = (a, b)
··where
····a = "Hello"
»       b = "World"

दूसरा, यदि आप केवल टैब का उपयोग करते हैं, तो आप एक लेआउट के साथ समाप्त हो सकते हैं जो सही नहीं दिखता है। उदाहरण के लिए, यदि एक टैब छह या अधिक स्थानों (इस मामले में आठ) के साथ प्रदर्शित होता है, तो निम्न कोड सही लगता है:

example = (a, b)
»       where»  a = "Hello"
»       »       b = "World"

लेकिन एक अन्य संपादक में जो 4 रिक्त स्थान का उपयोग करता है वह अभी नहीं दिखेगा:

example = (a, b)
»   where»  a = "Hello"
»   »   b = "World"

यह अभी भी सही है, हालांकि। हालाँकि, कोई व्यक्ति जो रिक्त स्थान का उपयोग करता है, वह रिक्त स्थान के साथ b 'बाइंडिंग और पार्सर त्रुटि के साथ समाप्त हो सकता है।

यदि आप अपने पूरे कोड में एक कोड कन्वेंशन लागू करते हैं जो यह सुनिश्चित करता है कि आप केवल एक लाइन की शुरुआत में टैब का उपयोग करते हैं और उसके बाद एक नई लाइन का उपयोग do हैं, do आप कुछ समस्याओं से बच सकते हैं ( 11 देखें)। हालांकि, जीएचसी की वर्तमान रिलीज़ें डिफ़ॉल्ट रूप से टैब के बारे में चेतावनी देती हैं , क्योंकि वे अतीत में many पार्सर त्रुटियों of source of हैं, इसलिए आप शायद उनसे भी छुटकारा चाहते हैं।

यह भी देखें

मैं अक्सर पढ़ता हूं कि मुझे हास्केल में टैब और रिक्त स्थान नहीं मिलाना चाहिए, या मुझे टैब का उपयोग बिल्कुल नहीं करना चाहिए। क्यूं कर?






indentation