2016-12-02 9 views
5

मैं सिर्फ पता चला कि इसक्यों यह एक सिंटैक्स त्रुटि मामले LINEBREAK करने के लिए अतिरिक्त खरोज के बिना मैच है, और क्या इसके चारों ओर पाने के लिए सिफारिश की शैली है?

foo = case ((),()) of 
     (() 
     ,()) ->() 

/tmp/wtmpf-file11080.hs:3:8: 
    parse error (possibly incorrect indentation or mismatched brackets) 

इस के साथ विफल बनाया जा सकता है पैटर्न

foo = case ((),()) of 
     (() 
     ,()) ->() 

की दूसरी पंक्ति इंडेंट करके काम करने के लिए, लेकिन इस के साथ असंगत लगता है मेरी हमेशा की तरह शैली, विशेष रूप से

bar = case (some lengthy :: Complicated typed expression 
      , another also lengthy :: Expression with (Other types)) of 
     (Complicated (Pattern match) to (unwrap) 
     , Expression that's (Again not so short)) -> the Rest of my Code 
012 में

ऊपर कैसे फिर से लिखा जाना चाहिए/सबसे सुसंगत देखने के लिए स्वरूपित?

+0

तुम सिर्फ एक जटिल पैटर्न से लाइन शोर को कम तो करना चाहते हैं तो आप इसे एक पैटर्न पर्याय में लपेट सकता है, या एक उच्च क्रम समारोह एक ला 'maybe' /' either'/'foldr में' case' अभिव्यक्ति डाल ' –

उत्तर

7

indentation rules रखकर कोड

foo = case ((),()) of 
     (() 
     ,()) ->() 

foo = case ((),()) of 
     { (() 
     ; ,()) ->() 
     } 

जो दो शाखाओं के साथ एक case, पहले एक एक सिंटैक्स त्रुटि जा रहा है करने के लिए desugared है। (अत्यंत सुरुचिपूर्ण नहीं है, हालांकि)

foo = case ((),()) of 
     ((() 
     ,())) ->() 

या यहाँ तक कि

foo = case ((),()) of 
     [email protected](() 
     ,()) ->() 
1

आप, साथ ही

(Complicated (Pattern match) to (unwrap), 
    Expression that's (Again not so short)) -> the Rest of my Code 
के रूप में पैटर्न मैच को फिर से लिखने सकता है:

मैं निम्नलिखित शैली बजाय सिफारिश करेंगे

मुझे पता है कि यह आपकी शैली के साथ असंगत है, लेकिन मुझे लगता है कि उस शैली का उपयोग करने के लिए कोई वास्तविक कारण नहीं है लेस (स्थिरता से अलग)।

संबंधित मुद्दे

 संबंधित मुद्दे