2013-05-14 4 views
5

के अंदर सशर्त संकलन मेरे पास एक साक्षर हैकेल फ़ाइल है और सशर्त संकलन का उपयोग करना चाहते हैं। मैं साक्षर प्रोग्रामिंग की पक्षी शैली का उपयोग करता हूं। निम्नलिखित कोड काम नहीं करता है।साक्षर हास्केल

> #if MIN_VERSION_base(4,6,0) 
> import Control.Exception 
> #endif 

मैं कबाल के लिए एक समाधान की जरूरत है 1.14.0

संपादित करें:

cpphs एक विकल्प --unlit जो साक्षर sourcecode unlits है, लेकिन मैं यह कैसे पारित करने के लिए पता नहीं है कैबल में सीपीएचएस के लिए विकल्प।

उत्तर

4

@kosmikus बताते हैं के रूप में, आप बस सी पूर्वप्रक्रमक निर्देशों किसी भी > या \begin{code} बाहर रख सकते हैं और वे अपेक्षा के अनुरूप काम करेगा - यदि वे अपने शाब्दिक कोड के गैर कोड भागों के अपने प्रसंस्करण के साथ हस्तक्षेप नहीं करते।

आप बस, पक्षी शैली साक्षर प्रोग्रामिंग के साथ सी पूर्वप्रक्रमक निर्देशों का उपयोग नहीं कर के रूप में unlitting कदम एक स्थान के साथ > बदल देता है, तो आप पहले कॉलम में # प्राप्त करने के लिए कोई मौका नहीं है। आप -keep-tmp-files को जीएचसी में पास करके और उत्पन्न .lpp फ़ाइल चेकआउट करके इसे सत्यापित कर सकते हैं।

आप \begin{code} ... \end{code} ब्लॉकों का सहारा दोनों पाने के लिए कर सकते हैं, लेकिन अगर आप उन्हें कोड के > शैली लाइनों के साथ मिश्रण, मन में अतिरिक्त स्थान रखने और अपने लाइनों \begin{code} में लिपटे में जोड़ने के ... \end{code}:

> {-# LANGUAGE CPP #-} 

A literal comment 

\begin{code} 
#if MIN_VERSION_base(4,6,0) 
    import Control.Exception 
#endif 
\end{code} 

> main = return() 
+0

क्या आपको वास्तव में कोड ब्लॉक पर स्विच करना है? क्या आप सीपीपी निर्देश सीधे स्रोत फ़ाइल में नहीं रख सकते हैं, बिना किसी पूर्व '''? – kosmikus

+0

ऊपर, मैंने सोचा कि मैंने पहले कोशिश की, लेकिन वास्तव में यह मामला है। –